Xslt 选择忽略一种类型的子项的值
我有下面的XMLXslt 选择忽略一种类型的子项的值,xslt,Xslt,我有下面的XML <p> <b>Chapter 3: Industrial Drawings</b> <fn> <fnn>11</fnn> <fnt> <p>fnt 1</p> </fnt> </fn> <b>
<p>
<b>Chapter 3: Industrial Drawings</b>
<fn>
<fnn>11</fnn>
<fnt>
<p>fnt 1</p>
</fnt>
</fn>
<b>and Designs</b>
</p>
这里我试图获取p
的内容,并忽略fn
node()。但我目前的输出是
Chapter 3: Industrial Drawings11fnt 1and Designs
但这是意料之中的
Chapter 3: Industrial Drawings and Designs
这里我使用的是后代或self::*/text()
,因为可能有很多类似下面的情况
p/b/text()
p/b/c/text()
p/i/c/text() etc...
我只想忽略
fn
并打印文本()。请告诉我怎么做。除操作符基本上是set-difference,X除Y
给出了集合X中的所有节点,而不是集合Y中的所有节点。在您的情况下,“X”是一组文本节点,“Y”是一组元素节点,因此它不会排除任何内容。如果您想要所有子体文本节点,除了那些位于某些fn
中的节点,您可以说
<xsl:value-of select=".//text()[not(ancestor::fn)]"/>
<xsl:value-of select=".//text()[not(ancestor::fn)]"/>