如何在XSLT1.0/xml中使用else函数 4. 10825 405.94 2020-01-01 2020-01-08 奥普拉斯-杜尔扎姆能源公司(schijf 2) 奥普拉斯-杜尔扎姆能源公司(schijf 2) 83101800 s 21 增值税 0.0375000 5. -0.02185792 -9.52 2020-01-01 2020-01-08 内贝赫尔科斯滕酒店 内贝赫尔科斯滕酒店 83101800 s 21 增值税 435.6800000 1. 0.25810000 0 2020-01-01 2020-02-08 Termijnbedrag Elektriciteit Termijnbedrag Elektriciteit 83101800 s 21 增值税 0

如何在XSLT1.0/xml中使用else函数 4. 10825 405.94 2020-01-01 2020-01-08 奥普拉斯-杜尔扎姆能源公司(schijf 2) 奥普拉斯-杜尔扎姆能源公司(schijf 2) 83101800 s 21 增值税 0.0375000 5. -0.02185792 -9.52 2020-01-01 2020-01-08 内贝赫尔科斯滕酒店 内贝赫尔科斯滕酒店 83101800 s 21 增值税 435.6800000 1. 0.25810000 0 2020-01-01 2020-02-08 Termijnbedrag Elektriciteit Termijnbedrag Elektriciteit 83101800 s 21 增值税 0,xml,xslt-1.0,Xml,Xslt 1.0,在上面,您可以找到我得到的一段XML。我想要以下信息:如果ItemClassificationCode是83101800,Item/Description是“Termijnbedag Elektriciteit”,那么“Elektra1”Elseif ItemClassificationCode是83101800,Item/Description是“Netbeheerkosten”,那么“Net1”Elseif ItemClassificationCode是83101800,那么“Elektra

在上面,您可以找到我得到的一段XML。我想要以下信息:如果ItemClassificationCode是83101800,Item/Description是“Termijnbedag Elektriciteit”,那么“Elektra1”Elseif ItemClassificationCode是83101800,Item/Description是“Netbeheerkosten”,那么“Net1”Elseif ItemClassificationCode是83101800,那么“Elektra”Else

我尝试了以下方法:

   <cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
  <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">4</cbc:ID>
  <cbc:InvoicedQuantity xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" unitCode="KWH">10825.00000000</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">405.94</cbc:LineExtensionAmount>
  <cac:InvoicePeriod>
     <cbc:StartDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-01-01</cbc:StartDate>
     <cbc:EndDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-01-08</cbc:EndDate>
  </cac:InvoicePeriod>
  <cac:Item>
     <cbc:Description xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Opslag duurzame energie (schijf 2)</cbc:Description>
     <cbc:Name xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Opslag duurzame energie (schijf 2)</cbc:Name>
     <cac:CommodityClassification>
        <cbc:ItemClassificationcode xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" listID="ZZZ">83101800</cbc:ItemClassificationcode>
     </cac:CommodityClassification>
     <cac:ClassifiedTaxCategory>
        <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">S</cbc:ID>
        <cbc:Percent xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">21.00</cbc:Percent>
        <cac:TaxScheme>
           <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">VAT</cbc:ID>
        </cac:TaxScheme>
     </cac:ClassifiedTaxCategory>
  </cac:Item>
  <cac:Price>
     <cbc:PriceAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">0.0375000</cbc:PriceAmount>
  </cac:Price>
 </cac:InvoiceLine>
   <cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
      <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">5</cbc:ID>
      <cbc:InvoicedQuantity xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" unitCode="ANN">-0.02185792</cbc:InvoicedQuantity>
      <cbc:LineExtensionAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">-9.52</cbc:LineExtensionAmount>
      <cac:InvoicePeriod>
         <cbc:StartDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-01-01</cbc:StartDate>
         <cbc:EndDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-01-08</cbc:EndDate>
      </cac:InvoicePeriod>
      <cac:Item>
         <cbc:Description xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Netbeheerkosten</cbc:Description>
         <cbc:Name xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Netbeheerkosten</cbc:Name>
         <cac:CommodityClassification>
            <cbc:ItemClassificationcode xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" listID="ZZZ">83101800</cbc:ItemClassificationcode>
         </cac:CommodityClassification>
         <cac:ClassifiedTaxCategory>
            <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">S</cbc:ID>
            <cbc:Percent xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">21.00</cbc:Percent>
            <cac:TaxScheme>
               <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">VAT</cbc:ID>
            </cac:TaxScheme>
         </cac:ClassifiedTaxCategory>
      </cac:Item>
      <cac:Price>
         <cbc:PriceAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">435.6800000</cbc:PriceAmount>
      </cac:Price>
   </cac:InvoiceLine>
   <cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
      <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">1</cbc:ID>
      <cbc:InvoicedQuantity xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" unitCode="MON">0.25810000</cbc:InvoicedQuantity>
      <cbc:LineExtensionAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">0.00</cbc:LineExtensionAmount>
      <cac:InvoicePeriod>
         <cbc:StartDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-01-01</cbc:StartDate>
         <cbc:EndDate xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">2020-02-08</cbc:EndDate>
      </cac:InvoicePeriod>
      <cac:Item>
         <cbc:Description xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Termijnbedrag Elektriciteit</cbc:Description>
         <cbc:Name xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">Termijnbedrag Elektriciteit</cbc:Name>
         <cac:CommodityClassification>
            <cbc:ItemClassificationcode xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" listID="ZZZ">83101800</cbc:ItemClassificationcode>
         </cac:CommodityClassification>
         <cac:ClassifiedTaxCategory>
            <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">S</cbc:ID>
            <cbc:Percent xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">21.00</cbc:Percent>
            <cac:TaxScheme>
               <cbc:ID xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">VAT</cbc:ID>
            </cac:TaxScheme>
         </cac:ClassifiedTaxCategory>
      </cac:Item>
      <cac:Price>
         <cbc:PriceAmount xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" currencyID="EUR">0.0000000</cbc:PriceAmount>
      </cac:Price>
   </cac:InvoiceLine>
</ubl:Invoice>

埃列克特拉
网络1
Elektra1
然而,上面的代码只是让我得到了一切的结果。所以ElektraNet1Elektra1,但我只想要Net1或elektra1,如果InvoiceLine有两个依赖于它的变量。因此,如果itemcode为83101800,且描述为Netbeheerkosten,则应为Net1,且仅为Net1

有人能帮我吗?我还尝试了xsl:otherwhise-when-when等。。但我似乎无法让它发挥作用。

试着这样做:

<xsl:template match="/">
   <xsl:for-each select="/*[local-name()='InvoiceLine']">
      <xsl:if test="*[local-name()='Item']/*[local-name()='CommodityClassification']/*[local-name()='ItemClassificationcode']='83101800'">Elektra</xsl:if>
      <xsl:if test="*[local-name()='Item']/*[local-name()='CommodityClassification']/*[local-name()='ItemClassificationcode']='83101800' and *[local-name()='Item']/*[local-name()='Description']='Netbeheerkosten'">Net1</xsl:if>
      <xsl:if test="*[local-name()='Item']/*[local-name()='CommodityClassification']/*[local-name()='ItemClassificationcode']='83101800' and *[local-name()='Item']/*[local-name()='Description']='Termijnbedrag Elektriciteit'">Elektra1</xsl:if>
   </xsl:for-each>
</xsl:template>

网络1
Elektra1
埃列克特拉



这要求样式表包含源XML中使用的命名空间声明

这就是模板规则的作用:

<xsl:template match="/ubl:Invoice">
    <xsl:for-each select="cac:InvoiceLine[cac:Item/cac:CommodityClassification/cbc:ItemClassificationcode='83101800']">
        <xsl:choose>
            <xsl:when test="cac:Item/cbc:Description='Netbeheerkosten'">Net1</xsl:when>
            <xsl:when test="cac:Item/cbc:Description='Termijnbedrag Elektriciteit'">Elektra1</xsl:when>
            <xsl:otherwise>Elektra</xsl:otherwise>
        </xsl:choose>
        <xsl:text>&#10;</xsl:text>
   </xsl:for-each>
</xsl:template>

网络1
网络1
埃列克特拉

使用。--请注意,使用前缀而不是
*[local-name()='…']
hack。您能帮我解决这个问题吗?我对xsl非常陌生(+/-1年)。不,因为您的XML不完整,并且没有显示预期的结果。请参阅:。预期结果应该是(在这种情况下):Elektra(第1行)Net1(第2行)和Elektra 1(第3行)谢谢!!这是为了我。
<xsl:template match="/ubl:Invoice">
    <xsl:apply-templates select="cac:InvoiceLine[cac:Item/cac:CommodityClassification/cbc:ItemClassificationcode='83101800']">
</xsl:template>

<xsl:template match="cac:Item[cbc:Description='Netbeheerkosten']">Net1</xsl:template>

<xsl:template match="cac:Item[cbc:Description='Termijnbedrag Elektriciteit']">Net1</xsl:template>

<xsl:template match="cac:Item">Elektra</xsl:template>