簡體   English   中英

如果xml元素沒有值,則必須輸出null值

[英]null value must be printed if there is no value for the xml element

我應該為XML文檔編寫一個XSLT,如果它沒有元素的參數,則XSLT必須考慮一個空值。 輸出必須是XML文檔,其中原始xml文檔中沒有值的元素必須打印為<tagName>Null</tagName>

這是xml文件

 <salesOrderRequest> <invoiceNo>1245</invoiceNo> <PizzaType/> <Price>1099</Price> <Discount>234</Discount> </salesOrderRequest> 

這是我的xslt

 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XMLTransform"> <xsl:template match="/"> <xsl:for-each select="/salesOrderRequest"> <xsl:value-of select="invoiceNo"/> <xsl:value-of select="PizzaType"/> <xsl:value-of select="Price"/> <xsl:value-of select="Discount"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> 

 <salesOrderRequest> <invoiceNo>1245</invoiceNo> <PizzaType>Null</PizzaType> <Price>1099</Price> <Discount>234</Discount> </salesOrderRequest> 

在XSLT 2.0或3.0中,

嘗試

<xsl:value-of select="if (normalize-space(PizzaType))
    then PizzaType
    else 'Null' "/>

或(如果您不想接受<PizzaType> </PizzaType>等同於<PizzaType/>

<xsl:value-of select="if (PizzaType ne '')
    then PizzaType
    else 'Null' "/>

要么

<xsl:value-of select="(PizzaType[. ne ''], 'Null')[1]"/>

如果您需要XSLT 1.0中的解決方案,則應該以這種方式標記您的問題。

嘗試:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XMLTransform">

  <xsl:template match="/">
    <xsl:apply-templates select="/salesOrderRequest/*"/>
  </xsl:template>

  <xsl:template match="salesOrderRequest/*" priority="1">
     <xsl:value-of select="."/>
  </xsl:template>

  <xsl:template match="salesOrderRequest/*[.='']" priority="2">
     <xsl:text>null</xsl:text>
  </xsl:template>

</xsl:stylesheet>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM