【问题标题】:Escaping xml tag in XSLT在 XSLT 中转义 xml 标记
【发布时间】:2013-08-26 13:31:46
【问题描述】:

我有一个输入 xml,比如说:

<myxml>
    <myelement id="1" />
    <myelement id="2" />
    <myelement id="3" />
</myxml>

我想创建一个 XSLT 来创建不同形式的输出 xml,比如:

<theirxml>
    <theirelement id="1" />
    <theirelement id="2" />
    <theirelement id="3" />
</theirxml>

由于我无法在标签内创建带有标签的 xslt(例如“

<xsl:for-each select="myxml/myelement">
    <xsl:text><![CDATA[<theirelement id="]]></xsl:text><xsl:value-of select="@name" /><xsl:text><![CDATA[" />]]></xsl:text>
</xsl:for-each>

但是,生成的输出不包含“”和“>”也是如此)。

顺便说一句,原因是因为该进程的输出是某些程序的输入,当标记转义为“<tag>”时,该程序无法读取 xml。

任何帮助将不胜感激!

【问题讨论】:

    标签: xml xslt xml-parsing escaping


    【解决方案1】:

    这是一个进行所需转换的样式表:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
        <xsl:output encoding="utf-8" method="xml"/>
    
        <xsl:template match="/">
            <myxml>
                <xsl:apply-templates/>
            </myxml>
        </xsl:template>
    
        <xsl:template match="myelement">
            <theirelement>
                <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
            </theirelement>
        </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

      【解决方案2】:

      @fred02138 的解决方案可以简化为:

      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
          <xsl:output encoding="utf-8" method="xml"/>
      
          <xsl:template match="/">
              <myxml>
                  <xsl:apply-templates/>
              </myxml>
          </xsl:template>
      
          <xsl:template match="myelement">
              <theirelement id="{@id}"/>
          </xsl:template>
      
      </xsl:stylesheet>
      

      花括号中的构造是一个“属性值模板”,以防您想在 XSLT 引用中查找它。

      【讨论】:

        猜你喜欢
        • 2013-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        相关资源
        最近更新 更多