【发布时间】:2019-09-03 16:45:33
【问题描述】:
我是使用 XSLT 的新手,我的一个程序遇到了问题。我试图用我有限的知识解决这个问题,但无济于事。我正在尝试处理 XML 文件以仅获取美国零件。数据包含中国和美国的部分。数据包含在重复节点中。
我已尝试使用条件语句将选择限制为仅获取美国零件 ID。但是,我正在获取所有部分的 ID。
这是 XML 输入文件的示例:
<Part>
<Part_ID>Comp-97531</Part_ID>
<Country>US</Country>
<Identification_Data>
<Product>Finished</Product>
<ID>12345678909876</ID>
<ID_Type>CHN-1</ID_Type>
<Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>123456789</ID>
<ID_Type>CHN-2</ID_Type>
</Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>13579</ID>
<ID_Type>CHN-3</ID_Type>
</Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>555555555</ID>
<ID_Type>USA-1</ID_Type>
</Identification_Data>
</Part>
<Part>
<Part_ID>Comp-95137</Part_ID>
<Country>US</Country>
<Identification_Data>
<Product>Finished</Product>
<ID>1234567812345</ID>
<ID_Type>CHN-1</ID_Type>
<Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>987654321</ID>
<ID_Type>CHN-2</ID_Type>
</Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>246810</ID>
<ID_Type>CHN-3</ID_Type>
</Identification_Data>
<Identification_Data>
<Product>Finished</Product>
<ID>777777777</ID>
<ID_Type>USA-1</ID_Type>
</Identification_Data>
</Part>
这是我正在尝试的 XSLT 代码:
<xsl:template match="/">
<FILE>
<xsl:for-each select="Part">
<xsl:call-template name="ProductRecord"/>
</xsl:for-each>
</FILE>
</xsl:template>
<xsl:template name="ProductRecord">
<ID>
<xsl:choose>
<xsl:when test="Country = 'US'">
<xsl:if test="Identification_Data/ID_Type='USA-1'">
<xsl:value-of select="Identification_Data/ID"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</ID>
</xsl:template>
要求仅获得在美国制造且 ID_TYPE = USA-1 的零件。 使用 XSLT 代码,我只希望 ID_Type = USA-1 的值为 555555555。但是,我得到的输出是这样的:
12345678909876 123456789 13579 555555555.
如何限制选择仅显示美国特定数据? 提前感谢您的回复。
【问题讨论】:
标签: xslt-2.0