Xml 如果Node=X并且我需要Node=X所在文件夹中的信息,如何使用select the right way的值
我在从节点选择值时遇到问题。我想从ID为2的发票行中选择存储在cac:item/cbc:name中的信息。我似乎无法正确使用select的值,因为它总是从第一个节点(InvoiceLince中ID为1的节点)获取答案。有人能帮我从ID为2的发票行中选择cac:item/cbc:name中存储的值吗Xml 如果Node=X并且我需要Node=X所在文件夹中的信息,如何使用select the right way的值,xml,xslt,Xml,Xslt,我在从节点选择值时遇到问题。我想从ID为2的发票行中选择存储在cac:item/cbc:name中的信息。我似乎无法正确使用select的值,因为它总是从第一个节点(InvoiceLince中ID为1的节点)获取答案。有人能帮我从ID为2的发票行中选择cac:item/cbc:name中存储的值吗 <InvoiceLine> <ID>1</ID> <LineExtensionAmount currencyID="EUR">0</LineExt
<InvoiceLine>
<ID>1</ID>
<LineExtensionAmount currencyID="EUR">0</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>
Relatienaam: : BLABLA
Bezoekadres : BLABLA2
</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<LineExtensionAmount currencyID="EUR">0</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>685000/06.0009/7603/355132.01</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
1.
0
0
0
0
s
0
增值税
关系:布拉布拉
贝佐卡德雷斯:布拉布拉2
0
2.
0
0
0
0
s
0
增值税
685000/06.0009/7603/355132.01
0
我已经尝试了以下代码:
<xsl:template match="/">
<xsl:for-each select="/x:Invoice/InvoiceLine/ID[ID='2']">
<xsl:if test="."><xsl:value-of select="substring(translate(cbc:Name,' ',''),1,6)"/></xsl:if>
</xsl:for-each>
</xsl:template>
我预计产量为68.5万辆,而不是1.5万辆。我做错什么了吗?你(可能)想要的表达是
/x:Invoice/InvoiceLine[ID='2']
目前,通过执行/x:Invoice/InvoiceLine/ID[ID='2']
,您正在选择ID
元素本身,但仅当该ID
的子ID
为2时(它没有)
通过执行/x:Invoice/InvoiceLine[ID='2']
选择的是InvoiceLine
元素,因此相对表达式cbc:Name
也应该返回一些内容
请注意,这假设您正确地处理了名称空间,因为您实际上没有在XML中显示任何名称空间声明
(注意,如果您确实想要选择ID
元素,您可以编写/x:Invoice/InvoiceLine/ID[.='2']
,但是要获得名称,您需要执行。/cbc:name
,其中。
用于获取当前节点的父节点)您(可能)想要的表达式是
/x:Invoice/InvoiceLine[ID='2']
目前,通过执行/x:Invoice/InvoiceLine/ID[ID='2']
,您正在选择ID
元素本身,但仅当该ID
的子ID
为2时(它没有)
通过执行/x:Invoice/InvoiceLine[ID='2']
选择的是InvoiceLine
元素,因此相对表达式cbc:Name
也应该返回一些内容
请注意,这假设您正确地处理了名称空间,因为您实际上没有在XML中显示任何名称空间声明
(注意,如果您确实想要选择ID
元素,您可以编写/x:Invoice/InvoiceLine/ID[.='2']
,但是要获得名称
,您需要执行。/cbc:name
,其中用于获取当前节点的父节点)当您编写/x:Invoice/InvoiceLine/ID[ID='2']
它将在
下找到另一个ID
元素,我不确定它是否给您提供了错误或任何错误的输出(基于您的描述)
我现在假设您的输入没有名称空间,因为问题中没有提到
尝试:(修改它以添加名称空间或修改问题本身)
假设输入:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<InvoiceLine>
<ID>1</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>
Relatienaam: : BLABLA
Bezoekadres : BLABLA2
</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>685000/06.0009/7603/355132.01</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
</Invoice>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:for-each select="/Invoice/InvoiceLine">
<xsl:if test="ID ='2'">
<xsl:value-of select="substring(translate(Item/Name,' ',''),1,6)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
1.
0
0
0
0
s
0
增值税
关系:布拉布拉
贝佐卡德雷斯:布拉布拉2
0
2.
0
0
0
0
s
0
增值税
685000/06.0009/7603/355132.01
0
解决方案可以是:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<InvoiceLine>
<ID>1</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>
Relatienaam: : BLABLA
Bezoekadres : BLABLA2
</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>685000/06.0009/7603/355132.01</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
</Invoice>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:for-each select="/Invoice/InvoiceLine">
<xsl:if test="ID ='2'">
<xsl:value-of select="substring(translate(Item/Name,' ',''),1,6)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
在这里找到演示:当您编写/x:Invoice/InvoiceLine/ID[ID='2']
它将在
下找到另一个ID
元素,我不确定它是否给您提供了错误或任何错误的输出(基于您的描述)
我现在假设您的输入没有名称空间,因为问题中没有提到
尝试:(修改它以添加名称空间或修改问题本身)
假设输入:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<InvoiceLine>
<ID>1</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>
Relatienaam: : BLABLA
Bezoekadres : BLABLA2
</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>685000/06.0009/7603/355132.01</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
</Invoice>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:for-each select="/Invoice/InvoiceLine">
<xsl:if test="ID ='2'">
<xsl:value-of select="substring(translate(Item/Name,' ',''),1,6)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
1.
0
0
0
0
s
0
增值税
关系:布拉布拉
贝佐卡德雷斯:布拉布拉2
0
2.
0
0
0
0
s
0
增值税
685000/06.0009/7603/355132.01
0
解决方案可以是:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
<InvoiceLine>
<ID>1</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>
Relatienaam: : BLABLA
Bezoekadres : BLABLA2
</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
<InvoiceLine>
<ID>2</ID>
<LineExtensionAmount currencyID="EUR">0
</LineExtensionAmount>
<TaxTotal>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxSubtotal>
<TaxableAmount currencyID="EUR">0</TaxableAmount>
<TaxAmount currencyID="EUR">0</TaxAmount>
<TaxCategory>
<ID>S</ID>
<Percent>0</Percent>
<TaxScheme>
<ID>VAT</ID>
</TaxScheme>
</TaxCategory>
</TaxSubtotal>
</TaxTotal>
<Item>
<Name>685000/06.0009/7603/355132.01</Name>
</Item>
<Price>
<PriceAmount currencyID="EUR">0</PriceAmount>
</Price>
</InvoiceLine>
</Invoice>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<xsl:for-each select="/Invoice/InvoiceLine">
<xsl:if test="ID ='2'">
<xsl:value-of select="substring(translate(Item/Name,' ',''),1,6)" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
在这里找到演示:谢谢你,维比!它显示正确的uitcome(cbc中的行:ID=2的发票行的名称)。非常感谢。谢谢你,维比!它显示正确的uitcome(cbc中的行:ID=2的发票行的名称)。非常感谢。