cdata 相关问题

CDATA(字面意思是字符数据)是不会在XML和SGML文档中解析为标记的数据。

如何配置 Tinymce 使其不删除 javascript 代码?

在前任开发人员去世后,我继承了一个旧网站。也许很愚蠢,但他们是好人,在我们的社区里做着好事,所以我主动提出提供帮助。 该网站使用旧版本...

回答 1 投票 0

如何在Python中编译jdbc连接的测试?

我尝试使用 py4j 提到的从 Python 连接和测试 JDBC 驱动程序 从 py4j.JavaGateway 导入 java_gateway # 使用 JDBC Jar 打开 JVM 接口 jdbc_jar_path = 'C:\Program Files...

回答 1 投票 0

为什么调用XmlWriter.WriteCData(String)方法时会添加额外的元素?

我需要将包含CDATA部分的其他xml节点的值写入XML节点的CDATA部分(我使用.NET 6) 例如,我需要生成并编写以下 XML: 我需要将包含 CDATA 部分的其他 xml 节点的值写入 XML 节点的 CDATA 部分(我使用 .NET 6) 例如,我需要生成并编写以下XML: <?xml version="1.0" encoding="utf-8"?> <items> <item><![CDATA[<some_node><![CDATA[cdata_value]]></some_node>]]</item> </items> 要生成 XML,我使用以下代码: string str_xml = String.Empty; using (MemoryStream m_stream = new MemoryStream()) { using (XmlWriter xml_writer = XmlWriter.Create(m_stream, new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true, OmitXmlDeclaration = false })) { xml_writer.WriteStartElement("items"); xml_writer.WriteStartElement("item"); xml_writer.WriteCData("<some_node><![CDATA[cdata_value]]></some_node>"); xml_writer.WriteFullEndElement(); xml_writer.WriteEndElement(); xml_writer.Flush(); } m_stream.Position = 0; using (StreamReader stream_reader = new StreamReader(m_stream)) { str_xml = stream_reader.ReadToEnd(); } } 调试器中str_xml变量的值: <?xml version="1.0" encoding="utf-8"?> <items> <item> <![CDATA[<some_node><![CDATA[cdata_value]]]]><![CDATA[></some_node>]]> </item> </items> 为什么项目节点的CDATA部分的值格式不正确? 最好使用 LINQ to XML API。自 2007 年起,它就在 .Net Framework 中可用。 无需增加 CData 部分。只需一个即可完成这项工作。 c# void Main() { string cdata_content = @"<root>My inner XML</root>"; XElement xelem = new XElement("items", new XElement("item", new XCData(cdata_content))); Console.WriteLine(xelem); } 输出 <items> <item><![CDATA[<root>My inner XML</root>]]></item> </items>

回答 1 投票 0

Chromium xmlString -> DOMParser() -> XMLSerializer() 嵌入 CDATA 的往返失败

如果您采用 XML 字符串,其中 CDATA 元素以正确的结构嵌入到 CDATA 元素中。 (其中“]]”的嵌入式 CDATA 结束表示为“]]]]>]]>” 而你...

回答 1 投票 0

如何使用SimpleXmlElement编写CDATA?

我有以下代码来创建和更新 xml 文件: '); $xml->title = '站点标题'; $xml->标题->addAttri...

回答 5 投票 0

如何在 Visual Basic / Code 上的 XML 文档上的 CDATA 内格式化 HTML 标签和 Javascript

我有 XML 文档,其中包含在 CDATA 之间编写的 html 和 javascript 代码。 例如: 我有 XML 文档,其中包含在 CDATA 之间编写的 html 和 javascript 代码。 例如: <element active='yes' type='Html' instance='LOGO'> <body> <![CDATA[ <div class="logos" id="logos"> <img class="float_right" src='mylogo.png' /> </div> ]]> </body> </element> 另一个例子: <element active="yes" type="Html" > <![CDATA[ <script> //Some javascript code </script>]]> </element> 我希望我的 IDE(Visual Studio 或 VSCode)将 CDATA 之间的文本识别为 HTML/Javascript 代码,并格式化代码。你知道有什么解决办法吗?我试图找到一些可以做到这一点的扩展,但找不到任何东西。 我找到了解决方案: 改变 C:\Users\USERNAME\AppData\Local\Programs\Microsoft VS Code 资源 pp xtensions\xml\syntaxes\xml.tmLanguage.json 现在 XML 找不到 我也在 Emmet 配置中进行了类似的更改: C:\Users\USERNAME\AppData\Local\Programs\Microsoft VS Code 资源 pp xtensions mmet\dist 颂歌 mmetNodeMain.js 在“属性”中将此文件设为“只读”,这样下次 VS 更新后就不会出现问题。

回答 1 投票 0

C# XML CDATA 保存文件

有人可以帮助我,我在 XMLDocument 变量中有以下内容: aaa2011202 有人可以帮助我,我在 XMLDocument 变量中有以下内容: <autorizaciones><autorizacion><estado>aaa</estado><numeroAutorizacion>2011202</numeroAutorizacion><fechaAutorizacion>2023-11-20T10:30:14-05:00</fechaAutorizacion><ambiente>prueba</ambiente><comprobante>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;factura id="comprobante" version="1.0.0"&gt; &lt;infoTributaria&gt; &lt;ambiente&gt;2&lt;/ambiente&gt; &lt;tipoEmision&gt;1&lt;/tipoEmision&gt; &lt;razonSocial&gt;EMPRESA&lt;/razonSocial&gt; &lt;nombreComercial&gt;EMPRESA&lt;/nombreComercial&gt; &lt;ruc&gt;99999999999&lt;/ruc&gt; &lt;claveAcceso&gt;2011202&lt;/claveAcceso&gt; &lt;codDoc&gt;01&lt;/codDoc&gt; &lt;estab&gt;001 &lt;/estab&gt; &lt;ptoEmi&gt;002&lt;/ptoEmi&gt; &lt;secuencial&gt;000107272&lt;/secuencial&gt; &lt;dirMatriz&gt;AV 25 DE Y 8 VO CLLJN&lt;/dirMatriz&gt; &lt;/infoTributaria&gt;</comprobante><mensajes /></autorizacion></autorizaciones> 我想保存为以下格式的文件: <autorizaciones><autorizacion><estado>aaa</estado><numeroAutorizacion>2011202</numeroAutorizacion><fechaAutorizacion>2023-11-20T10:30:14-05:00</fechaAutorizacion><ambiente>prueba</ambiente><comprobante><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <factura id="comprobante" version="1.0.0"> <infoTributaria> <ambiente>2</ambiente> <tipoEmision>1</tipoEmision> <razonSocial>EMPRESA</razonSocial> <nombreComercial>EMPRESA</nombreComercial> <ruc>99999999999</ruc> <claveAcceso>2011202</claveAcceso> <codDoc>01</codDoc> <estab>001</estab> <ptoEmi>002</ptoEmi> <secuencial>000107272</secuencial> <dirMatriz>AV 25 DE Y 8 VO CLLJN`your text`</dirMatriz> </infoTributaria></factura>]]></comprobante><mensajes /></autorizacion></autorizaciones> 我使用 XmlDocument docXML.Save(file) 但第一种格式是保留。我该如何解决这个问题? 使用 LINQ to XML。 using System.Xml.Linq; var xml = XElement.Load("test.xml"); var comprobante = xml.Descendants("comprobante").First(); var value = comprobante.Value; var cdata = new XCData(value); comprobante.ReplaceNodes(cdata); xml.Save("test2.xml");

回答 1 投票 0

有没有办法在 VSCODE 中突出显示 XML CDATA 标签内嵌入的 JavaScript?

我很难分析 XML 的 CDATA 标签内的 JS 代码,因为 VSCODE 像注释一样以单一颜色突出显示它。那么有没有办法突出显示 XML CDATA 标签内的 JavaScript 代码...

回答 1 投票 0

测试不支持自定义驱动程序的连接 (Salesforce JDBC)

我在尝试使用存储在 S3 存储桶中的 CData JDBC 试用 JAR 在 AWS Glue 中为 Salesforce 驱动程序设置自定义 JDBC 连接时遇到问题。目标是连接到 Salesforce

回答 1 投票 0

AWS Glue:测试不支持自定义驱动程序的连接 (Salesforce JDBC)

我在尝试使用存储在 S3 存储桶中的 CData JDBC 试用 JAR 在 AWS Glue 中为 Salesforce 驱动程序设置自定义 JDBC 连接时遇到问题。目标是连接到 Salesforce

回答 1 投票 0

将文本与 JSON (CDATA) 中的变量与条件语句组合

我尝试使用 thymeleaf 构建动态 ld+JSON。在此我使用条件语句,这基本上是有效的。但是,不会解析条件语句内的所有变量。 我尝试使用 thymeleaf 构建动态 ld+JSON。在此我使用条件语句,这基本上是有效的。但是,条件语句内的所有变量都不会被解析。 <script type="application/ld+json" > /*<![CDATA[*/ { "@context": "https://schema.org", "@graph": [ { "@type": "Article", "@id": "https://website.de/quack/[[${quack.id}]]/#article", "publisher": { "@id": "[[${article.nickname}]]" }, [( ${article.primaryImage} == null ? '' : '"image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" }, "thumbnailUrl": "${article.primaryImage}",')] "inLanguage": "[[${quack.language}]]" } ] }; /*]]>*/ </script> 结果: {... "primaryImageOfPage": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" }, "image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" }, ...} 我错过了什么,将条件语句与语句内的正确解析结合起来? 关键字是字面替换 所以最终对我有用的是使用管道而不是单引号,这可以正确解析所有变量: [( ${article.primaryImage} == null ? '' : |"image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" }, "thumbnailUrl": "${article.primaryImage}",| )]

回答 1 投票 0

嵌入 CDATA 中的 xslt 样式表的身份转换

输入数据 输入数据 <?xml version="1.0" encoding="UTF-8"?> <root> <PETS> <cats_stylesheet><![CDATA[<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Cats> <name> <xsl:value-of select="'Felix'"/> </name> <breed> <xsl:value-of select="cat/breed" </breed> <age> <xsl:value-of select="cat/age" </age> </Cats> </xsl:template> </xsl:stylesheet> ]]></cats_stylesheet> <dogs_stylesheet><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Dogs> <name> <xsl:value-of select="'Rover'"/> </name> <breed> <xsl:value-of select="dog/breed"/> </breed> <age> <xsl:value-of select="dog/age"/> </age> </Dogs> </xsl:template> </xsl:stylesheet> ]]></dogs_stylesheet> </PETS> </root> 所需输出 这应该只是原件的副本,但只更改了狗的名字。 <?xml version="1.0" encoding="UTF-8"?> <root> <PETS> <cats_stylesheet><![CDATA[<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Cats> <name> <xsl:value-of select="'Felix'"/> </name> <breed> <xsl:value-of select="cat/breed" </breed> <age> <xsl:value-of select="cat/age" </age> </Cats> </xsl:template> </xsl:stylesheet> ]]></cats_stylesheet> <dogs_stylesheet><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Dogs> <name> <xsl:value-of select="'Cerberus'"/> </name> <breed> <xsl:value-of select="dog/breed"/> </breed> <age> <xsl:value-of select="dog/age"/> </age> </Dogs> </xsl:template> </xsl:stylesheet> ]]></dogs_stylesheet> </PETS> </root> 我尝试过的 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias" version="3.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes" cdata-section-elements="cats_stylesheet dogs_stylesheet" exclude-result-prefixes="xsl"/> <xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="dogs_stylesheet"> <xsl:variable name="contents_of_cdata"> <xsl:value-of disable-output-escaping="true" select="text()"/> </xsl:variable> <dogs_stylesheet> <Dogs> <name> <xsl:value-of select="'Cerberus'"/> </name> <xsl:copy-of select="$contents_of_cdata/xsl:stylesheet/xsl:template/Dogs/node()[not(self::Dogs/name)]"/> </Dogs> </dogs_stylesheet> </xsl:template> </xsl:stylesheet> 我尝试将 CDATA 文本转换为“节点集”(使用旧的 xsltl 1.0 术语),但这不起作用。 它没有将 dogs_stylesheet 放入 CDATA 标记中 它正在插入名称空间 dogs_stylesheet CDATA 文本未转换为“节点集” 如何才能达到想要的输出?

回答 0 投票 0

这是什么类型的代码。如何加密这个[关闭]

//<![CDATA[ eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while...</desc> <question vote="-3"> <div> </div> <pre><code>&lt;script&gt; //&lt;![CDATA[ eval(function(p,a,c,k,e,d){e=function(c){return(c&lt;a?&#39;&#39;:e(parseInt(c/a)))+((c=c%a)&gt;35?String.fromCharCode(c+29):c.toString(36))};if(!&#39;&#39;.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return&#39;\\w+&#39;};c=1};while(c--){if(k[c]){p=p.replace(new RegExp(&#39;\\b&#39;+e(c)+&#39;\\b&#39;,&#39;g&#39;),k[c])}}return p}(&#39;D e=[&#34;\\z\\r\\m\\I\\C\\o&#34;,&#34;\\r\\m\\h\\s\\o\\h\\p\\A\\h\\y\\h\\w\\o&#34;,&#34;\\a\\a\\b\\F\\a\\a\\c\\j\\a\\a\\c\\j\\a\\a\\c\\a\\a\\a\\c\\i\\a\\a\\i\\H\\a\\a\\d\\f\\a\\a\\d\\f\\a\\a\\b\\i\\a\\a\\b\\j\\a\\a\\b\\p\\a\\a\\d\\p\\a\\a\\c\\i\\a\\a\\c\\j\\a\\a\\b\\G\\a\\a\\c\\j\\a\\a\\b\\q\\a\\a\\b\\i\\a\\a\\b\\G\\a\\a\\b\\n\\a\\a\\b\\n\\a\\a\\c\\q\\a\\a\\d\\p\\a\\a\\b\\q\\a\\a\\b\\f\\a\\a\\d\\f\\a\\a\\b\\c\\a\\a\\b\\F\\a\\a\\d\\f\\a\\a\\b\\q\\a\\a\\b\\c\\a\\a\\b\\p\\a\\a\\b\\q\\a\\a\\b\\u\\a\\a\\b\\n\\a\\a\\d\\f\\a\\a\\b\\d\\a\\a\\b\\n\\a\\a\\b\\f\\a\\a\\b\\c\\a\\a\\b\\c\\a\\a\\b\\u\\a\\a\\c\\d\\a\\a\\d\\f\\a\\a\\b\\L\\a\\a\\b\\G\\a\\a\\c\\i\\a\\a\\c\\j\\a\\a\\b\\u\\a\\a\\c\\d\\a\\a\\d\\f\\a\\a\\c\\j\\a\\a\\b\\u\\a\\a\\c\\F\\a\\a\\c\\j\\a\\a\\c\\d\\a\\a\\b\\q\\a\\a\\b\\L\\a\\a\\d\\f\\a\\a\\c\\b\\a\\a\\i\\i\\a\\a\\d\\p\\a\\a\\b\\H\\a\\a\\c\\i&#34;,&#34;\\s\\z\\M\\w\\r&#34;,&#34;\\o\\m\\O\\h&#34;,&#34;\\z\\m\\r&#34;,&#34;\\y\\s\\o\\r\\v&#34;,&#34;&#34;,&#34;\\A\\h\\w\\Z\\o\\v&#34;,&#34;\\U\\m\\t\\y\\n\\v\\s\\m\\n\\t\\x\\h&#34;,&#34;\\s\\C\\C\\h\\w\\x\\n\\v\\I\\A\\x&#34;,&#34;\\X\\t\\x\\M&#34;,&#34;\\m\\h\\y\\t\\Y\\h&#34;];!J(){D l=K[e[1]](e[0]),k=e[2];l[e[3]]=e[4];l[e[5]]=J(l){D k,B=l[e[6]](/.{1,4}/g)||[],E=e[7];V(k=0;k&lt;B[e[8]];k++){E+=P[e[9]](N(B[k],S))};Q E}(k),K[e[R]][e[T]](l),l[e[W]]()}()&#39;,62,62,&#39;||||||||||x30|x36|x37|x32|_0x7c9f|x46||x65|x33|x34|_0x1902x2|_0x1902x1|x72|x43|x74|x45|x39|x63|x61|x6F|x35|x68|x6E|x64|x6D|x73|x6C|_0x1902x3|x70|var|_0x1902x4|x38|x31|x41|x69|function|document|x44|x79|parseInt|x75|String|return|11|16|10|x66|for|12|x62|x76|x67&#39;.split(&#39;|&#39;),0,{})); function name() { // Put all of your scripts here //---- DELETE me and REPLACE with your code ----// } //]]&gt; &lt;/script&gt; </code></pre> <p>当 ui 跟随博客主题的 XML 文件时,我发现了这样的代码。我发现在这段代码中它正在调用 jquery 脚本。我如何加密这个</p> <p>当我使用 Chrome 网络速度工具测试我的博客时,我发现一个未使用的 jQuery 代码从我的主题中的某处调用。当我删除这个解密代码时,问题得到解决,但我的网站功能被遗漏了 我尝试了很多加密器,但找不到解决方案。当我删除此代码时,它会禁用很多网站功能</p> </question> </body></html>

回答 0 投票 0

使用 CData 中的 JDBC 驱动程序连接 Google Analytics 和 Google Cloud Platform

这是我有史以来的第一篇文章,所以如果我不满意或者发错地方了,我很抱歉。 这是我的问题: 我刚刚创建了一个谷歌云平台帐户和一个谷歌分析帐户...

回答 0 投票 0

从 XmlNode 中删除 CDATA 标签

我有一个代表以下 xml 的 XmlNode,例如: XmlNode xml.innerText = 我有一个XmlNode代表以下xml例如: XmlNode xml.innerText = <book> <name><![CDATA[Harry Potter]]</name> <author><![CDATA[J.K. Rolling]]</author> </book> 我想更改此节点,使其包含以下内容: XmlNode xml.innerText = <book> <name>Harry Potter</name> <author>J.K. Rolling</author> </book> 任何想法?谢谢! 好吧,如果这正是你所说的,那就很简单了: xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]",""); xmlDoc.Save();// xmlDoc is your xml document 我建议您阅读整个 xml 并重写它。您可以像这样读取没有 cdata 的值 foreach (var child in doc.Root.Elements()) { string name = child.Name; string value = child.Value }

回答 2 投票 0

XML ANSI 中的重音代码

我有一个 XML 文档,它必须是 ANSI 格式并且带有西班牙口音,我不知道如何在 CDATA 标签内执行此操作:

回答 1 投票 0

当包裹在 CDATA 标签中时,我的 SVG 文件中的 Javascript 无法运行

我有一个 SVG 文件,格式如下: 我有一个 SVG 文件,格式如下: <svg id="test" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" viewBox="0 0 1435 1084"> <style type="text/css"> svg{background:red} </style> <script type="text/javascript">//<![CDATA[ const x=1; const y=1; if (x===y){ document.getElementById('test').append('<style type="text/css">svg{background:blue}</style>'); }else{} //]]></script> </svg> 我想做的是有一个特定的脚本当SVG作为图像对象嵌入时不运行,但当SVG作为对象嵌入或嵌入iFrame或在浏览器中自行打开时正常运行.特别是,嵌入为图片时需要屏蔽的代码包括<style>标签。 CDATA 标签似乎非常适合这项工作,但它对我不起作用。 这有点令人困惑。我看过包含 CDATA 标签并按预期运行的 SVG,但无论出于何种原因,当我做完全相同的事情时,JS 永远不会运行。 此外,如果你能想出一种简洁的方法来创建一个可以运行不同 JS 的 SVG(如果是的话);独立、内联、对象、iframe 和图像查看。 有什么建议吗? 我已经尝试了很多东西,并找到了 CDATA 标签作为最可能的解决方案。 编辑:包括一个代码片段。据我了解,SVG 在此示例中应具有蓝色背景,但呈现红色。 <svg id="test" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" viewBox="0 0 1435 1084"> <style type="text/css"> svg{background:red} </style> <script type="text/javascript">//<![CDATA[ const x=1; const y=1; if (x===y){ document.getElementById('test').append('<style type="text/css">svg{background:blue}</style>'); }else{} //]]></script> </svg> 我的猜测是您的脚本抛出错误,因为 jQuery 在您尝试运行它的环境中不可用。 如果 jQuery 不可用,此行将抛出错误: $('svg').append('<style type="text/css">svg{background:blue} 如果 jQuery 可用,您的示例无需修改即可工作: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <?xml version="1.0" encoding="utf-8"?> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" viewBox="0 0 1435 1084"> <style type="text/css"> svg{background:red} </style> <script type="text/javascript">//<![CDATA[ const x=1; const y=1; if (x===y){ $('svg').append('<style type="text/css">svg{background:blue}</style>'); }else{} //]]></script> </svg> 你不需要 jQuery 来做你想做的事。你可以用内置的浏览器 API 做同样的事情: <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" viewBox="0 0 1435 1084"> <style type="text/css"> svg{background:red} </style> <script type="text/javascript">//<![CDATA[ const x=1; const y=1; if (x===y){ const style = document.createElement('style'); style.innerText = "svg{background:blue}"; document.querySelector('svg').append(style); }else{} //]]></script> </svg>

回答 1 投票 0

如何使用 xslt 删除 CDATA 中的元素

我的 xml 看起来像: ` 我的 xml 看起来像: ` <validationRules> <rule exceptionText="" format="ECIM_Schematron_1.0" name="dependencies"><![CDATA[<schema xmlns="http://purl.oclc.org/dsdl/schematron"> <pattern> <rule context="/abc/mno/lpd/Mmt/BusyAnnouncementName"> <assert test='(string-length(@BusyAnnouncementName) = 0 or @BusyAnnouncementName = Ga/GaAnn/@GaAnn)'>Instance of GaAnn with <value-of select="./@BusyAnnouncementName"/> referenced in BusyAnnouncementName must exist.</assert> </rule> <rule context="/abc/mno/lpd/Mmt/GenericFailureAnnouncementName"> <assert test='(string-length(@GenericFailureAnnouncementName) = 0 or @GenericFailureAnnouncementName= Ga/GaAnn/@GaAnn)'>Instance of GaAnn with <value-of select="./@GenericFailureAnnouncementName"/> referenced in GenericFailureAnnouncementName must exist.</assert> </rule> </pattern> </schema>]]></rule> </validationRules>` 我期待输出: `<validationRules> <rule exceptionText="" format="ECIM_Schematron_1.0" name="dependencies"><![CDATA[<schema xmlns="http://purl.oclc.org/dsdl/schematron"> <pattern> <rule context="/abc/mno/lpd/Mmt/BusyAnnouncementName"> <assert test='(string-length(@BusyAnnouncementName) = 0 or @BusyAnnouncementName = Ga/GaAnn/@GaAnn)'>Instance of GaAnn with <value-of select="./@BusyAnnouncementName"/> referenced in BusyAnnouncementName must exist.</assert> </rule> </pattern> </schema>]]></rule> </validationRules> ` 我想在 XSLT 脚本中使用 CDATA 删除上下文以 GenericFailureAnnouncementName 结尾的规则 我先尝试删除 CDATA 并计划删除规则。它没有用 <xsl:template match="//validationRules/rule/text()">        <xsl:value-of select="." disable-output-escaping="yes"/>   </xsl:template> 有了这个,我能够实现删除 CDATA 并且其余的看起来都像 TAG 然后我试了<xsl:template match="//rule[ends-with(@context, 'GenericFailureAnnouncementName ')]"/> 无法删除 CDATA 中的特定规则。 寻找更好的解决方案 正如您在评论中被告知的那样,对于纯 XSLT,这主要在 XSLT 3 中使用 parse-xml 函数和 serialize 函数是可行的: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" exclude-result-prefixes="#all" version="3.0"> <xsl:mode on-no-match="shallow-copy"/> <xsl:output cdata-section-elements="rule"/> <xsl:template match="rule"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:variable name="transformed"> <xsl:apply-templates select="parse-xml(.)"/> </xsl:variable> <xsl:value-of select="serialize($transformed)"/> </xsl:copy> </xsl:template> <xsl:template match="sch:rule[ends-with(@context, 'GenericFailureAnnouncementName')]"/> </xsl:stylesheet> 使用早期版本的 XSLT,您需要检查处理器是否公开扩展函数或允许您调用底层平台以实现 parse-xml 和 serialize 功能。

回答 1 投票 0

用Python从XML中提取CDATA [重复] 。

我正在使用一个XML文件,就像这样:import xml.etree.ElementTree as ET xml = '''' 。 ...

回答 1 投票 0

如何在XML文件中的CDATA前后添加空格。

我想创建一个函数来修改XML内容而不改变格式。我设法改变文本,但我不能不改变XML的格式。所以现在,我想做的是添加......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.