如何改变>和<使用xsl转换?

时间:2017-09-20 07:30:44

标签: xml xslt

 Input    
      <p>
        &lt;mml:mrow&gt;
        &lt;mml:mi&gt;a&lt;/mml:mi&gt;
        &lt;mmml:mo&gt; &lt;  &lt;/mmml:mo&gt;
        &lt;mmml:mo&gt; &gt;  &lt;/mmml:mo&gt;
        &lt;/mml:mrow&gt;
     </p>
 Output
      <p>
       <mml:mrow>
        <mml:mi>a</mml:mi>
        <mmml:mo> &lt;  </mmml:mo>
        <mmml:mo> &gt;  </mmml:mo>
       </mml:mrow>
     </p>

我希望你能够理解这个场景。我需要一个xslt代码来执行上面的转换。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用HTML解析器解析该内容:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"  xmlns:d="data:,dpc" exclude-result-prefixes="d">

    <xsl:import href="https://raw.githubusercontent.com/davidcarlisle/web-xslt/master/htmlparse/htmlparse.xsl"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="p">
        <xsl:copy>
            <xsl:copy-of select="d:htmlparse(., '', false())"/>
        </xsl:copy>
    </xsl:template>
</xsl:transform>

http://xsltransform.net/6pS1zDA/1这样做,结果是

<p>
        <mrow>
        <mi>a</mi>
        <mo> &lt;  </mo>
        <mo> &gt;  </mo>
        </mrow>
     </p>

需要XSLT 2.0或3.0处理器,因为在XSLT中实现的HTML解析器使用XSLT 2.0。