使用xslt

时间:2015-12-11 19:20:45

标签: xml xslt xslt-2.0

在XML文件中,我在源代码中看到了这一点: <#>会导致其他应用程序出现问题,并将其视为<#>

我正在使用XSLT2.0并尝试对#to div中的任何内容进行替换,以完全删除带有空字符串的<#>。 我通过将结构放在变量中并替换它来完成此操作。

替换功能的结果是我也失去了所有其他元素。 欢迎任何建议。 输入看起来像这样:

`<html>
 <body>
   <p>&lt;#&gt;This is just a test</p>
 </body>
</html>`

但它看起来也像这样:

`<html>
 <body>
   &lt;#&gt;<p>This is just a test</p>
 </body>
</html>`

通缉出来的是:

`<html>
 <body>
   <p>This is just a test</p>
 </body>
</html>`

我试过的XSL就是这个,它删除了所有元素。我确实看到我在副本上这样做,所以&#39;可能是错的......:

`<xsl:template name="body">
  <xsl:copy-of select="replace($bodycontent, '#', 'div /')" />
 </xsl:template name="body">

   <xsl:variable name="bodycontent">
    <xsl:apply-templates select="/newsMessage/itemSet/newsItem/contentSet/inlineXML/h:html/h:body/h:section/h:p" />
    <p class="txt-ind">
        <xsl:value-of select="//rightsInfo/copyrightHolder/name" />
    </p>
</xsl:variable>`

1 个答案:

答案 0 :(得分:2)

如果您使用

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

<xsl:template match="text()">
    <xsl:value-of select="replace(., '&lt;#&gt;', '')"/>
</xsl:template>

然后会在http://xsltransform.net/gWvjQfu

在线删除所有这些字符