如何使用XSL将输入XML转换为另一个XML的属性值?
输入XML:
<Order OrderNo="1" />
输出XML:
<NewXML Input="<Order OrderNo="1" />" />
我需要将输入XML转换为字符串并存储在输出XML中的属性值中。
答案 0 :(得分:0)
将XML节点转换为字符串并不是很有意义,而且我非常确定有一种更简单的方法可以做任何你想做的事情。但这是一种稍微肮脏的方法,它将转换元素及其属性:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="Order">
<NewXML>
<xsl:attribute name="Input">
<xsl:apply-templates select="." mode="element-to-string"/>
</xsl:attribute>
</NewXML>
</xsl:template>
<xsl:template match="*" mode="element-to-string">
<xsl:text><</xsl:text>
<xsl:value-of select="name()"/>
<xsl:for-each select="@*">
<xsl:value-of select="concat(' ', name(), '="', ., '"')"/>
</xsl:for-each>
<xsl:text>></xsl:text>
</xsl:template>
</xsl:stylesheet>