我是xsl和xslt的新手。我正在使用xslt进行xml到xml的转换。我有下面的xml文件。我使用for-each循环遍历REQ-IF / record,并且在循环内要迭代REQ-IF / Attributes / Attribute以访问@Name值。我尝试使用../,但它仅提供一个上一级的值,并且不允许我进行迭代。你能帮我这个忙吗?谢谢。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<REQ-IF>
<record>
<Name>ABC</Name>
<Presentationname>Task Record</Presentationname>
<GUID>123</GUID>
</record>
<record>
<Name>DEF</Name>
<Presentationname>Role Record</Presentationname>
<GUID>456</GUID>
</record>
<record>
<Name>GHI</Name>
<Presentationname>WorkProduct Record</Presentationname>
<GUID>789</GUID>
</record>
<Attributes>
<Attribute>
<Name>Task</Name>
</Attribute>
<Attribute>
<Name>Role</Name>
</Attribute>
<Attribute>
<Name>WorkProduct</Name>
</Attribute>
</Attributes>
</REQ-IF>
答案 0 :(得分:2)
可行
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/REQ-IF">
<xsl:for-each select="record">
<xsl:text>
</xsl:text>
<xsl:value-of select="./Name"/>
<xsl:for-each select="../Attributes/Attribute">
<xsl:text>
	</xsl:text>
<xsl:value-of select="Name"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出:
ABC
Task
Role
WorkProduct
DEF
Task
Role
WorkProduct
GHI
Task
Role
WorkProduct
在嵌套循环中,您可能使用的是for-each select =“ ../ Attributes”而不是for-each select =“ ../ Attributes / Attribute”。由于REQ-IF只有一个“属性”节点,所以只有一个结果。