如何使用xsl从xml节点获取CDATA?

前端之家收集整理的这篇文章主要介绍了如何使用xsl从xml节点获取CDATA?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用XSL获取 XML节点的CDATA内容.该
节点目前看起来像这样:
<node id="1" text="Book Information" ><![CDATA[This is sample text]]></node>

我需要这是示例文本片段.有没有人对此有任何想法?

提前致谢.

好吧,如果我使用这个样式表:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:template match="node/text()">
    <xsl:copy/>
  </xsl:template>
</xsl:stylesheet>

在这个XML文件上:

<?xml version="1.0" encoding="utf-8"?>
<node id=1 text="Book Information" ><![CDATA[This is sample text]]></node>

我得到一个解析错误,因为id = 1是无效的XML.

属性值(id =“1”)周围加上引号并重新运行样式表,我得到输出

This is sample text

所以有一个开始.基本上,只需将CDATA视为文本节点,即可开始使用.

你说:

I found something like:
<xsl:output cdata-section-elements="text"/>
and then to fetch CDATA:
<xsl:value-of select="node" />

如果您正在使用value-of,这种方法也可以正常工作.这里将是您的评论中的一个示例,使用value-of.但请注意,cdata-section-elements仅适用于输出端,指示要将哪些输出XML元素打印为CDATA节而不是普通的旧字符数据.它与获取数据无关.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output cdata-section-elements="foo"/>
  <xsl:template match="/">
    <foo>
      <xsl:value-of select="node"/>
    </foo>
  </xsl:template>
</xsl:stylesheet>

打印出来

<?xml version="1.0"?>
<foo><![CDATA[This is sample text]]></foo>

猜你在找的XML相关文章