使用question1和question2我能够使用非命名空间XML上的XSLT基于属性值删除Element的值 但我的输入看起来像这样
<tns:message xmlns:tns="http://www.co.com/schemas/sys">
<Body xmlns="http://co.com/message">
<Record xmlns="http://schemas.co.com/Record/1.0">
<Book Class="NOVEL">Jungle Book</Book>
<Book Class="AUTOBIOGRAPHY">The Autobiography of Benjamin Franklin</Book>
</Record>
</Body>
</tns:message>
我曾尝试使用XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msg="http://co.com/message"
xmlns:rec="http://schemas.co.com/Record/1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="msg:Body/rec:Record/Book[@Class = 'NOVEL']/text()" />
</xsl:stylesheet>
但没有运气。
当我将命名空间前缀添加到输入中时,它已经起作用
提前谢谢。
答案 0 :(得分:1)
继承默认名称空间(不带前缀)。这意味着输入中的Book
元素与其父Record
位于同一名称空间中 - 您需要更改此内容:
<xsl:template match="msg:Body/rec:Record/Book[@Class = 'NOVEL']/text()" />
为:
<xsl:template match="msg:Body/rec:Record/rec:Book[@Class = 'NOVEL']/text()" />