是否可以使用substring-before和substring-after将元素作为选择器?如果没有,你会怎么做?
如果我有这个代码段,
<root>
<element>This is an example. Some text here | and some text there</element>
</root>
我可以使用substring-before或substring-after和pipe |获取左侧或右侧的文字
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="root">
<element><xsl:value-of select="substring-before(element, '|')"/></element>
</xsl:template>
</xsl:stylesheet>
获取
<?xml version="1.0" encoding="UTF-8"?>
<element1>This is an example. Some text here </element1>
但是我怎么能用分隔文本的元素来做,比如lb或alt?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<element>This is an example. Some text here <alt type="divider"/> and some text there</element>
</root>
我正在考虑与兄弟姐妹的事情,但我不想返回一个元素,但字符串。所以我无法真正地围绕它。
提前谢谢!
答案 0 :(得分:0)
路径/root/element/text()[1]
会在alt
元素之前提供文本节点,在/root/element/text()[2]
元素之后提供文本节点的路径alt
,这假设您知道存在这样一个元素,你有两个由元素分隔的文本节点。无论如何value-of
输出节点的字符串值,您永远不会使用value-of
输出节点本身。
答案 1 :(得分:0)
是的,这个XPath表达式
/root/element/text()[not(preceding-sibling::alt)]
选择之前的文本 alt
,
and some text there
和他的XPath表达式,
/root/element/text()[not(following-sibling::alt)]
选择 alt
后的文字:
and some text there