是否可以使用XSLT在xml元素中编写xml。
由于我已经在一个元素中,我无法使用匹配模板功能。我试图使用xsl副本,但它会导致以下错误
“元素”类型的项目无法在“属性”类型的节点中构建
转换前的XML格式
<Results>
<Locations>
<Location>
<xyz>asa</xyz>
<extended>
<abc>blah</abc>
</extended>
<another>
<abc>blah</abc>
</another>
</Location>
<Location>
<xyz>asa</xyz>
<extended>
<abc>blah</abc>
</extended>
<another>
<abc>blah</abc>
</another>
</Location>
</Locations>
</Results>
**转换后所需的XML格式**
<TransactionResponse ResponseType="Location_Query_Response1">
<ParsedData Name="MessageData" Value="




*******************************Location*******"/>
<Location>
<xyz>asa</xyz>
<extended>
<abc>blah</abc>
</extended>
<another>
<abc>blah</abc>
</another>
</Location>
<Location>
<xyz>asa</xyz>
<extended>
<abc>blah</abc>
</extended>
<another>
<abc>blah</abc>
</another>
</Location>
</TransactionResponse>
XSLT
<xsl:template match="/">
<xsl:element name="TransactionResponse">
<xsl:element name="Data">
<xsl:element name="ParsedData">
this piece works
</xsl:element>
<xsl:for-each select="Locations/Location/*>
<xsl:copy-of select="Location"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
答案 0 :(得分:0)
只需添加另一个模板即可重写位置,避免在所有子节点上使用<xsl:for-each>
。此外,您无需使用<xsl:element>
,因为您可以直接使用节点。
<xsl:template match="/">
<TransactionResponse>
<Data>
<ParsedData>
this piece works
</ParsedData>
<xsl:apply-templates select="Locations"/>
</Data>
</TransactionResponse>
</xsl:template>
<xsl:template match="Locations">
<xsl:copy-of select="*"/>
</xsl:template>