当元素包含html时,不会添加CData标记

时间:2014-09-27 12:51:01

标签: xml xslt

我有一个xml,如下所示:

<SampleData> 
<SampleGroup>
        <sectionLabel>Auto</sectionLabel>
        <SampleContent> 
            <htmlContent><table border="1" cellpadding="1" cellspacing="1" style="width:500px"> <tbody> <tr> <td>sdf</td> <td>xc</td> </tr> <tr> <td>xcv</td> <td>axcv</td> </tr> <tr> <td>zxc</td> <td>asdasd</td> </tr> </tbody> </table></htmlContent> 
            <contentType>table</contentType> 
        </SampleContent>
</SampleGroup>  
<SampleGroup>       
         <sectionLabel>Dexter</sectionLabel>
</SampleGroup>
</SampleData>

我的Xslts如下:

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" cdata-section-   elements="sectionLabel htmlContent"/>
<xsl:template match="node()|@*">
 <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
 </xsl:copy>
 </xsl:template>

上面的xslt将cdata添加到section标签标签中,但它没有添加到htmlcontent元素,因为它有html标签,但是如果我将纯文本放入htmlcontet,它会添加它们。

所以任何人都可以帮我解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:0)

这是正确的。 cdata-section-elements的目的是指定输出中哪些元素的文本内容输出为CDATA,但您的身份转换不能输出{{1}内的任何文本} element,只有一个子htmlContent元素。

如果您希望html内容变成文本,那么您需要一个样式表将元素序列化为文本(在其他SO问题中有这样的样式表的示例),然后您可以使用table将该文本输出为CDATA。