Skip to main content
 首页 » 编程设计

xml之选择包含额外属性的特定元素

2025年05月04日128mayingbao

我对XSLT相当陌生,并且想知道如何替换某些元素。基本上,我想用一个普通的BR替换带有额外属性的BR元素。 XML如下:

<outer_element> 
    <p> 
        <font face="Arial"> 
            Invitations<br> 
        </font> 
        <font face="Arial"> 
            Charts<br> 
        </font> 
    </p> 
    <span style="font-size:12pt;"> 
        <br clear="all" style="font-size:18pt;"> 
    </span> 
<outer_element> 


以下是XSL的一部分:

<xsl:template match="//outer_element"> 
    <xsl:element name="outer_element"> 
        <xsl:value-of select="."/> 
    </xsl:element> 
    <xsl:element name = "text"> 
        <xsl:value-of select="."/> 
    </xsl:element> 
</xsl:template> 


另外,我不确定我要寻找的是XSLT 1.0还是XSLT 2.0解决方案。

请您参考如下方法:

您输入的不是有效的XML / XHTML。 br应该关闭:<br/>。同样,最后的结束标签也不是结束标签。
如果您不希望使用有效的XHTML,请查看https://jsoup.org/http://www.html-tidy.org/

顺便说一句:有一个名为identity transform的XSLT模式,该模式将输入递归地复制到输出中,但是允许您覆盖所需每个元素的复制过程。

基本模式锁定是这样的。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:template match="@*|node()"> 
    <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
  </xsl:template> 
</xsl:stylesheet> 


现在为 br添加一个模板,该模板仅复制元素,而不复制属性:

<xsl:template match="br"> 
 <xsl:copy/> 
</xsl:template> 


应该是这样。