XSL:将输入xml转换为属性值

时间:2018-02-13 14:28:58

标签: xml xslt

如何使用XSL将输入XML转换为另一个XML的属性值?

输入XML:

<Order OrderNo="1" />

输出XML:

<NewXML Input="<Order OrderNo="1" />" />

我需要将输入XML转换为字符串并存储在输出XML中的属性值中。

1 个答案:

答案 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>&lt;</xsl:text>
        <xsl:value-of select="name()"/>
        <xsl:for-each select="@*">
            <xsl:value-of select="concat(' ', name(), '=&quot;', ., '&quot;')"/>
        </xsl:for-each>     
        <xsl:text>&gt;</xsl:text>
    </xsl:template>

  </xsl:stylesheet>