使用XSLT,我无法使用未包含在特定标记中的数据转换XML文件。这是我想要做的一个例子:
XML输入:
<test>
<h1>some text here</h1>
<h4 class="orange">Other text here</h4>
TEXT I WANT TO HAVE ACCESS TO
<personalTag/>
</test>
XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<p> h1 text : <xsl:value-of select="test/h1"/> </p>
<p> h4 text : <xsl:value-of select="test/h4"/> </p>
<p> direct text : <xsl:value-of select="test"/> </p>
</xsl:template>
我想要的输出:
<?xml version="1.0" encoding="UTF-8"?>
<p> h1 text : some text here </p>
<p> h4 text : other text here </p>
<p> direct text : TEXT I WANT TO HAVE ACCESS TO </p>
但是当我进行这种转换时,我得到了这个结果XML:
<?xml version="1.0" encoding="UTF-8"?>
<p> h1 text : some text here </p>
<p> h4 text : other text here </p>
<p> direct text :some text here other text here TEXT I WANT TO HAVE ACCESS TO </p>
任何人都知道如何做到这一点?提前谢谢。
P.S:标题可能不够明确,但我不知道如何解释我面临的问题。答案 0 :(得分:1)
您正在寻找text()
函数,该函数仅返回与指定节点直接关联的文本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<p> h1 text : <xsl:value-of select="test/h1" /> </p>
<p> h4 text : <xsl:value-of select="test/h4" /> </p>
<p> all test text : <xsl:value-of select="test" /> </p>
<p> direct text : <xsl:value-of select="test/text()"/> </p>
</xsl:template>