Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 如何查找关闭元素后的文本并将其删除_Xslt - Fatal编程技术网

Xslt 如何查找关闭元素后的文本并将其删除

Xslt 如何查找关闭元素后的文本并将其删除,xslt,Xslt,我想删除元素和在元素后面找到的文本。 例如: 生活$ 在上面的例子中,我想替换 $ 使用“”(空)或简单地删除它。 有什么建议吗 要从输入XML中删除某些内容,您应该编写一个emty模板 匹配这样的节点。其余部分由标识模板复制 至于你的任务,我怀疑你是否愿意 删除所有p元素。 因此,在我的示例脚本中,我为p元素编写了一个空模板 使用class=“xx” 要删除它后面的文本节点(示例XML中的$), 您还必须编写一个空模板,与这样一个节点匹配: 文本节点 它前面的第一个兄弟姐妹名为p和cla

我想删除元素和在元素后面找到的文本。 例如:

生活

$
在上面的例子中,我想替换

$
使用“”(空)或简单地删除它。 有什么建议吗


要从输入XML中删除某些内容,您应该编写一个emty模板 匹配这样的节点。其余部分由标识模板复制

至于你的任务,我怀疑你是否愿意 删除所有
p
元素。 因此,在我的示例脚本中,我为
p
元素编写了一个空模板 使用
class=“xx”

要删除它后面的文本节点(示例XML中的
$
), 您还必须编写一个空模板,与这样一个节点匹配:

  • 文本节点
  • 它前面的第一个兄弟姐妹名为
    p
    class=“xx”
因此,脚本可以如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="p[@class='xx']"/>

  <xsl:template match="text()[preceding-sibling::*[1][self::p[@class='xx']]]"/>

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

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <h1>Title</h1>
  <p>is brutal</p>Xxx
  <p>and full of traps</p>Yyy
</root>

标题
是残忍的

Xxx 充满陷阱

Yyy
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="p[@class='xx']"/>

  <xsl:template match="text()[preceding-sibling::*[1][self::p[@class='xx']]]"/>

  <xsl:template match="@*|node()">
    <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
  </xsl:template>
</xsl:stylesheet>
<root>
  <h1>Title</h1>
  <p class="xx">life</p>$
  <p>is brutal</p>Xxx
  <p>and full of traps</p>Yyy
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <h1>Title</h1>
  <p>is brutal</p>Xxx
  <p>and full of traps</p>Yyy
</root>