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

ms-access – 如何将CDATA插入从Access 2003导出的XML文本标记?

我从Access 2003获得了 XML导出,并尝试使用XSLT在文本字段(latin …)上插入CDATA标记,但我在XSLT中非常糟糕…

这里是XML源:

<?xml version="1.0" encoding="UTF-8"?>
    <daTaroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="MESSAGES%20old.xsd" generated="2012-07-31T13:25:46">
      <export_x005F_xml_message>
       <libelle>h euismod tincidu </libelle>
       <price>300</price>
       <libelle2>h euirci tation ullamc</libelle2>
    </export_x005F_xml_message>
    <export_x005F_xml_message>
      <libelle>h euismod tincidunt ut lao</libelle>
      <price>200</price>
      <libelle2>h euirci tation ullamcorper</libelle2>
   </export_x005F_xml_message>
  </daTaroot>

在这里,我的XSLT开始……:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml"/>
     <xsl:template match='*[name() = "MESSAGES"]'>
           <xsl:text disable-output-escaping="yes">
             &lt;![CDATA[
           </xsl:text>
           <xsl:copy-of select="./node()"/>
           <xsl:text disable-output-escaping="yes">
             ]]&gt;
            </xsl:text>
     </xsl:template>
    </xsl:stylesheet>

我想得到类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
    <daTaroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="MESSAGES%20old.xsd" generated="2012-07-31T13:25:46">
      <export_x005F_xml_message>
       <libelle><![CDATA[h euismod tincidu ]]></libelle>
       <price>300</price>
       <libelle2><![CDATA[h euirci tation ullamc ]]></libelle>
    </export_x005F_xml_message>
    <export_x005F_xml_message>
      <libelle><![CDATA[h euismod tincidunt ut lao ]]></libelle2>
      <price>200</price>
      <libelle2><![CDATA[h euirci tation ullamcorper ]]></libelle2>
   </export_x005F_xml_message>
  </daTaroot>

你能帮我创建合适的XSLT吗?
这个XML来自Access 2003,它没有为文本字段提供CDATA选项……我确信通用模型可以帮助像我这样的其他开发人员:-)

解决方法

正如这里已经回答: Transform XML with XSLT and preserve CDATA (in Ruby),更好的答案是使用xsl:output.例如 …

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" cdata-section-elements="libelle libelle2" />

<xsl:template match="@*|node()">
 <xsl:copy>
   <xsl:apply-templates select="@*|node()"/>
 </xsl:copy>
</xsl:template>

</xsl:stylesheet>

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