使用XSL将XML片段作为字符串存储到属性中

时间:2014-11-19 12:20:55

标签: xslt

我想使用XSL将xml的片段存储到属性中。例如,我有以下xml

<a>
  <b>
    <c>test1</c>
    <c>test2</c>
  </b>
</a>

并希望得到这个结果(属性中的xml应该正确转义):

<a attr="<b><c>test1</c><c>test2</c></b>"/>

这可以通过使用XSL来实现吗?

1 个答案:

答案 0 :(得分:1)

使用XSLT 3.0,有一个函数serialize-xml,在早期版本中,您可以导入像http://lenzconsulting.com/xml-to-string/这样的模块然后编码

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:import href="xml-to-string.xsl"/>

<xsl:template match="/">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="a">
  <xsl:copy>
    <xsl:attribute name="attr">
      <xsl:apply-templates mode="xml-to-string"/>
    </xsl:attribute>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>