微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用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>

原文地址:https://www.jb51.cc/xml/292056.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。