这个问题的主题可能不正确,因为我是XSLT中的新主题。我将尝试用示例解释。我有以下XML
<?xml version="1.0" encoding="UTF-8"?>
<Recordset Name="Report" xmlns="http://pia.com/xml/ns">
<Record>
<TransactionReferenceNumber>T00005546</TransactionReferenceNumber>
<ExecutingEntityIDCode>724500LY73GPE4GDX159</ExecutingEntityIDCode>
</Record>
<Record>
<TransactionReferenceNumber>P00098080</TransactionReferenceNumber>
<ExecutingEntityIDCode>66666</ExecutingEntityIDCode>
</Record>
</Recordset>
xlst:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://pia.com/xml/ns"
exclude-result-prefixes="a">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" omit-xml-declaration="no" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="/a:Recordset/a:Record">
<TxId>
<xsl:value-of select="/a:Recordset/a:Record/a:TransactionReferenceNumber"/>
</TxId><xsl:text>
</xsl:text>
<ExctgPty>
<xsl:value-of select="/a:Recordset/a:Record/a:ExecutingEntityIDCode"/>
</ExctgPty>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
带有所需的输出
<?xml version="1.0" encoding="utf-8"?>
<TxId>T00005546</TxId>
<ExctgPty>724500LY73GPE4GDX159</ExctgPty>
<TxId>P00098080</TxId>
<ExctgPty>66666</ExctgPty>
,但我在两种情况下都获得了第一个数据。
<?xml version="1.0" encoding="utf-8"?>
<TxId>T00005546</TxId>
<ExctgPty>724500LY73GPE4GDX159</ExctgPty>
<TxId>T00005546</TxId>
<ExctgPty>724500LY73GPE4GDX159</ExctgPty>
如何循环并获得所需的输出?注意:这只是我正在使用的XML和XSLT代码的一小部分。
使用此
<xsl:for-each select="/a:Recordset/a:Record">
<TxId>
<xsl:value-of select="a:TransactionReferenceNumber"/>
</TxId><xsl:text>
</xsl:text>
<ExctgPty>
<xsl:value-of select="a:ExecutingEntityIDCode"/>
</ExctgPty>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://pia.com/xml/ns" exclude-result-prefixes="a">
<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="no" indent="yes"/>
<xsl:template match="a:TransactionReferenceNumber">
<TxId>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</TxId>
</xsl:template>
<xsl:template match="a:ExecutingEntityIDCode">
<ExctgPty>
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</ExctgPty>
</xsl:template>
</xsl:stylesheet>
我会
- 使用XSL:apply-templates代替XSL:for-east
- 利用默认模板将穿越整个XML树,除了属性
- 仅针对元素编写模板:TransActionReferenceNumber和答:执行限制码以更改元素名称并添加行供稿字符。