标签: cdata

如何使用xsl从xml节点获取CDATA?

我试图CDATA使用XSL 获取XML节点的内容.该节点目前看起来像这样:

<node id="1" text="Book Information" ><![CDATA[This is sample text]]></node>
Run Code Online (Sandbox Code Playgroud)

我需要这This is sample text件作品.有没有人对此有任何想法?

提前致谢.

xml xslt cdata

6
推荐指数
2
解决办法
4万
查看次数

yaml/yaml多行转义序列中的Markdown?

是否可以在yaml中存储未转义的降价文档?我测试过了

key:|+ 
    markdown text block that could have any combination of line breaks, >, -, :, ', " etc etc. 
Run Code Online (Sandbox Code Playgroud)

这不起作用.对于yamal,我需要类似CDATA或python样式的三重引号.有任何想法吗?

markdown yaml cdata string-literals

6
推荐指数
1
解决办法
2725
查看次数

将查询结果存储在Xml变量中时,如何保留CDATA标记?

当我使用For Explicit在Sql Server 2008 R2中生成Xml(因为我的消费者想要CDATA中包含的元素之一)并将结果存储在Xml变量中时,我想要包装在CDATA标记中的数据不再包含在CDATA标记中.如果我不将For Xml Explicit结果推送到Xml变量中,则保留CDATA标记.我使用@Xml变量作为.Net的SqlParameter.

在这个例子中,第一选择(选择@xml)并没有有2号线包裹在CDATA标签.但是第二个选择(用于填充@Xml变量的相同查询)确实包含了包装Line2列的CDATA标记.

Declare @Xml Xml

Begin Try
    Drop Table #MyTempTable
End Try
Begin Catch
End Catch

Select
    'Record' As Record
    , 'Line1' As Line1
    , 'Line2' As Line2
Into
    #MyTempTable

Select @Xml =
(
    Select
        x.Tag
        , x.Parent
        , x.[Root!1]
        , x.[Record!2!Line1!Element]
        , x.[Record!2!Line2!cdata]
    From
        (
            Select
                1 As Tag, Null As Parent
                , Null As [Root!1]
                , Null As [Record!2!Line1!Element]
                , Null As [Record!2!Line2!cdata]
            From
                #MyTempTable
            Union
            Select
                2 …
Run Code Online (Sandbox Code Playgroud)

xml cdata sql-server-2008

6
推荐指数
1
解决办法
2926
查看次数

嵌套CDATA - 正确

这是XML文档中的问题:

<![CDATA[<b>Title</b> 
       Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
       tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
       quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
       consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
       cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
       proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
]]>
Run Code Online (Sandbox Code Playgroud)

我需要在本文中插入CDATA表达式.怎么做 ?(如果我喜欢这个,我会在评估文件中看到错误)

<![CDATA[]]]]>Expression<![CDATA[>]]>
Run Code Online (Sandbox Code Playgroud)

xml cdata

6
推荐指数
2
解决办法
8372
查看次数

PHP,SimpleXML,解码CDATA中的实体

我遇到以下行为:

$xml_string1 = "<person><name><![CDATA[ Someone&#039;s Name ]]></name></person>";
$xml_string2 = "<person><name> Someone&#039;s Name </name></person>";

$person = new SimpleXMLElement($xml_string1);
print (string) $person->name; # Someone&#039;s Name

$person = new SimpleXMLElement($xml_string2);
print (string) $person->name; # Someone's Name

$person = new SimpleXMLElement($xml_string1, LIBXML_NOCDATA);
print (string) $person->name; # Someone&#039;s Name
Run Code Online (Sandbox Code Playgroud)

php文档说NOCDATA"将[CD] CDATA合并为文本节点".对我来说,这意味着CDATA将被视为与文本节点相同 - 或者第三个示例的行为现在将与第二个示例相同.

我无法控制XML(它是来自外部源的提要),否则我只是删除CDATA标记,因为它什么也不做,并且破坏了我想要的行为.

为什么上面的例子表现得如此?有没有办法让SimpleXML以与处理文本节点相同的方式处理CDATA节点?"合并CDATA作为文本节点"实际上做了什么,因为我似乎不理解该选项?

在我提取数据之后,我正在解码,但上面的例子对我来说仍然没有意义.

php xml simplexml cdata libxml2

6
推荐指数
1
解决办法
8621
查看次数

Javascript CDATA部分

最近,我正在创建一个模块,将google再营销代码添加到网上商店.我根据文档为不同类型的页面(产品,类别,购物车等)准备了google_tag_params.一切顺利,直到客户使用Google Tag Assistant插件检查了Chrome页面.它显示CDATA部分的警告.起初我不明白他在说什么,因为参数很好,我没有在控制台中收到任何错误.所以我检查了Google Tag助手,令我惊讶的是,它的行为如下.

代码:

<script type="text/javascript">
//<![CDATA[
var google_conversion_id = <?php echo $this->getConversionId();?>;
var google_conversion_label = '<?php echo $this->getConversionLabel();?>';
var google_custom_params = window.google_tag_params;
var google_remarketing_only = <?php echo $this->getRemarketingOnlyFlag();?>;
//]]> 
</script>
Run Code Online (Sandbox Code Playgroud)

它显示警告"缺少CDATA评论",并指向文档https://support.google.com/tagassistant/answer/2978937?ref_topic=2947092#cdata_comments

但改变这个

<script type="text/javascript">
/*<![CDATA[*/
var google_conversion_id = <?php echo $this->getConversionId();?>;
var google_conversion_label = '<?php echo $this->getConversionLabel();?>';
var google_custom_params = window.google_tag_params;
var google_remarketing_only = <?php echo $this->getRemarketingOnlyFlag();?>;
/*]]> */
</script>
Run Code Online (Sandbox Code Playgroud)

使警告消失.

所以我的问题是这个.在任何浏览器中,在线注释和多行注释之间是否有任何区别?这只是谷歌标签助手奇怪的行为,不承认这些评论?

javascript cdata google-tag-manager

6
推荐指数
2
解决办法
2617
查看次数

XML DTD中的PCDATA与CDATA

在XML DTD中 - 在定义元素时,我们使用#PCDATA来表示该元素可以包含任何可解析的文本.在定义属性时,我们使用CDATA来表示其值可以是任何字符数据.

XML中使用的CDATA是XML解析器未解析的(多字符转义序列).一致地,当我们使用CDATA定义属性时; 解析器不应该解析它.但是,确实如此!

那么,为什么不能使用PCDATA代替CDATA来定义属性?

更新 - 这一直保持与SGML向后兼容.SGML中这种命名背后的原因是什么?

xml sgml dtd cdata pcdata

6
推荐指数
1
解决办法
5740
查看次数

Thymeleaf和内联脚本SAXParseException

我有一个使用百里叶模板的页面,在使用内联脚本时,我在页面加载时遇到以下错误:

org.xml.sax.SAXParseException; lineNumber:270; columnNumber:85; 元素的内容必须由格式良好的字符数据或标记组成.

第270行的代码

<script type="text/javascript" >
    window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>"+"<"+"/script>");
</script>
Run Code Online (Sandbox Code Playgroud)

我试过用document.write替换"<",">"符号&lt; &gt;,不再发生异常但是脚本不再加载了

javascript cdata thymeleaf

6
推荐指数
1
解决办法
2853
查看次数

我如何在 XSL 中的 javascript for 循环中获得一个 less 来工作?

我正在使用 CDATA 来转义脚本,但在 IE8 的调试器中,我仍然在 for 循环条件中收到此消息:“预期的 ')'”。我假设它仍然认为 ; 在&lt;由 CDATA 生成的结束循环条件中。

我的 XSL 模板中的原始脚本:

<script type="text/javascript" language="javascript">  
<![CDATA[
    function submitform(form){
        var oErrorArray = new Array();
        for (i=0;i<form.length;i++) 
        eval("oErrorArray["+i+"]=oError"+i);
        var goForm = true;
        for(i=0;i<form.length;i++) {
            oErrorArray[i].innerHTML = "";
            if(form[i].value="")){
                oErrorArray[i].innerHTML = "Error - input field is blank";
                goForm = false;
            }           
        }
        if(goForm == true) form.submit();
    }
    function resetform(form){
        form.reset();
    }
]]>
</script>
Run Code Online (Sandbox Code Playgroud)

转换后生成的代码(来自 IE8 调试器)

<script type="text/javascript" language="javascript">
    function submitform(form){
        var oErrorArray = new Array(); …
Run Code Online (Sandbox Code Playgroud)

javascript xml xslt loops cdata

5
推荐指数
1
解决办法
5988
查看次数

需要一个CDATA事件通知stax解析器的java

我接管了一个使用stax解析器的应用程序的维护,将许多记录的XML文件分解为单个记录以供进一步处理.为此目的使用这种类型的解析器在我看来是过度的,但我没有写它.

该应用程序现在遇到如下数据:

<name><![CDATA[A & B]]></name>
Run Code Online (Sandbox Code Playgroud)

我们当前的解析器返回begin'name'标记的事件.下一个事件是值为'A&B'的字符事件.

从Sun的网页上我发现了这个:


报告CDATA事件Streaming XML Parser中实现的javax.xml.stream.XMLStreamReader不报告CDATA事件.如果您的应用程序需要接收此类事件,请配置XMLInputFactory以设置以下特定于实现的report-cdata-event属性:

XMLInputFactory factory = XMLInptuFactory.newInstance();
factory.setProperty("report-cdata-event", Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)

我们使用的解析器不支持'report-cdata-event'属性.

我想找到一个报告这样一个事件的解析器,这样我就不必检查需要由CDATA构造保护的字符的每一段文本.

更新:

发布后我浏览了一些相关的问题,并提到'isCoalescing'属性; 记录它被设置为FALSE.

java stax cdata xml-parsing

5
推荐指数
2
解决办法
2866
查看次数