我有一个XML文档,其中包含一个包含以下samplecode的TextBlock .
<TextBlock>
<config>This is a config.</config>
<path>This is a file path.</path>
</TextBlock>
实际的XML文件包含以下内容
<TextBlock>
<config>This is a config.</config>
<path>This is a file path.</path>
</TextBlock>
我正在尝试使用XSLT 1.0获取路径标记的值
<h1>
<xsl:value-of select="/TextBlock/path" disable-output-escaping="yes"/>
</h1>
我没有得到这个值,因为XML结构由于&lt; gt而被破坏了 .
有没有办法解决这个问题,或者在XSLT中将 <
和 >
转换为 <
和 >
?
2 回答
转义的XML只是一个无意义的文本字符串,无法使用XPath进行解析 .
在给定的示例中,您可以使用:
从给定文档中提取字符串
"This is a file path."
.或者,您可以处理文档两次:在第一遍中,使用
disable-output-escaping
来取消对字符串的转换,然后在生成的文件中使用第二个样式表来提取现在将是path
元素的内容 .补充:
如果整个文档如您编辑的示例中所示进行转义,则它不是XML文档,并且根本不能由XSLT(至少不是XSLT 1.0)处理 .
如果您有sed可用,则可以在使用XSLT处理文件之前将文件通过它 .
例如:要处理
input.xml
到output.xml
,您将执行然后使用您选择的XSLT处理器处理
output.xml
.这会将所有
<
和>
实体转换为相应的字符 .