我试图使用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>