标签: cdata

用于html的xslt中的cdata

我有一个生成纯HTML的XSLT文件.我需要在CDATA块中包装一些元素,因此打算使用cdata-section-elements.但是,如果我想要包含CDATA的元素<p>在页面上只有一个,那么如何让它不将CDATA放在所有其他<p>元素中呢?

输入数据是这样的:

<item>
  ...
  <g:category>Gifts under &amp;pound;10</g:category>
</item>
Run Code Online (Sandbox Code Playgroud)

我的XSL是:

<xsl:element name="a">
  <xsl:attribute name="href">productlist.aspx</xsl:attribute>
  <xsl:copy-of select="text()" />
</xsl:element>
Run Code Online (Sandbox Code Playgroud)

我想要这样做:

Gifts under £10
Run Code Online (Sandbox Code Playgroud)

但我得到的只是:

Gifts under &pound;10
Run Code Online (Sandbox Code Playgroud)

xslt cdata

2
推荐指数
1
解决办法
6955
查看次数

在JavaScript变量中存储HTML或XML代码

我想在javascript变量中存储一些HTML/XML标记.问题是文本比较大.例如,如何将以下XML片段存储在javascript变量中?

    <QuestionForm xmlns="[the QuestionForm schema URL]">
  <Overview>
    <Title>Game 01523, "X" to play</Title>
    <Text>
      You are helping to decide the next move in a game of Tic-Tac-Toe.  The board looks like this:
    </Text>
    <Binary>
      <MimeType>
        <Type>image</Type>
        <SubType>gif</SubType>
      </MimeType>
      <DataURL>http://tictactoe.amazon.com/game/01523/board.gif</DataURL>
      <AltText>The game board, with "X" to move.</AltText>
    </Binary>
    <Text>
      Player "X" has the next move.
    </Text>
  </Overview>
  <Question>
    <QuestionIdentifier>nextmove</QuestionIdentifier>
    <DisplayName>The Next Move</DisplayName>
    <IsRequired>true</IsRequired>
    <QuestionContent>
      <Text>
        What are the coordinates of the best move for player "X" in this game?
      </Text>
    </QuestionContent>
    <AnswerSpecification> …
Run Code Online (Sandbox Code Playgroud)

javascript xml jquery cdata mechanicalturk

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

删除所有CDATA节点并替换为编码文本

所以,我有一个庞大的XML文件,我想删除所有CDATA部分,并用安全的,HTML编码的文本节点替换CDATA节点内容.

用正则表达式剥离CDATA当然会破坏解析.是否有LINQ或XmlDocument或XmlTextWriter技术将CDATA与编码文本交换?

我还不太关心最终的编码,只是如何用我选择的编码替换这些部分.

原始例子

  ---
  <COLLECTION type="presentation" autoplay="false">
    <TITLE><![CDATA[Rights & Responsibilities]]></TITLE>
    <ITEM id="2802725d-dbac-e011-bcd6-005056af18ff" presenterGender="male">
      <TITLE><![CDATA[Watch the demo]]></TITLE>
      <LINK><![CDATA[_assets/2302725d-dbac-e011-bcd6-005056af18ff/presentation/presentation-00000000.mp4]]></LINK>
    </ITEM>
  </COLLECTION>
  ---
Run Code Online (Sandbox Code Playgroud)

应该成为

          <COLLECTION type="presentation" autoplay="false">
            <TITLE>Rights &amp; Responsibilities</TITLE>
            <ITEM id="2802725d-dbac-e011-bcd6-005056af18ff" presenterGender="male">
              <TITLE>Watch the demo</TITLE>
              <LINK>_assets/2302725d-dbac-e011-bcd6-005056af18ff/presentation/presentation-00000000.mp4</LINK>
            </ITEM>
          </COLLECTION>
Run Code Online (Sandbox Code Playgroud)

我想最终的目标是转向JSON.我试过这个

            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath( @"~/somefile.xml"));
            string jsonText = JsonConvert.SerializeXmlNode(doc);
Run Code Online (Sandbox Code Playgroud)

但我最终得到了丑陋的节点,即"#cdata-section"键.WAAAAY需要花费很多时间才能重新开发前端以接受这一点.

"COLLECTION":[{"@type":"whitepaper","TITLE":{"#cdata-section":"SUPPORTING DOCUMENTS"}},{"@type":"presentation","@autoplay":"false","TITLE":{"#cdata-section":"Demo Presentation"},"ITEM":{"@id":"2802725d-dbac-e011-bcd6-005056af18ff","@presenterGender":"male","TITLE":{"#cdata-section":"Watch the demo"},"LINK":{"#cdata-section":"_assets/2302725d-dbac-e011-bcd6-005056af18ff/presentation/presentation-00000000.mp4"}
Run Code Online (Sandbox Code Playgroud)

c# xml cdata url-encoding

2
推荐指数
1
解决办法
5965
查看次数

为什么我的 HTML 中的 CDATA 部分没有呈现?

我正在写一份关于 HTML 中的 XML 注入攻击的报告。因此,我将拥有(损坏的)HTML 内容作为我的 HTML 的内容。因此,我试图将我的 HTML 内容包装在 CDATA 块中,但它似乎确实呈现正确。

我有(由 W3C 验证)文档:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>report</title>
    </head>
    <body>
        <div><![CDATA[AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;">]]></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

根据我对维基百科文章的理解,这意味着内容应该“标记为解析器仅将其解释为字符数据,而不是标记”。所以输出应该是

AuthType=<META HTTP-EQUIV="Set-Cookie" Content="USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;">
Run Code Online (Sandbox Code Playgroud)

然而,在两者Chrome 21.0.1180.60 mFirefox 14.0.1所有呈现的是

]]>
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?不应该从第一个<![CDATA[到第一个的所有内容都]]>出现在屏幕上,就好像每个字符都已被转义一样?

html xml xhtml cdata

2
推荐指数
1
解决办法
3914
查看次数

强制清空 CDATA 元素

有人问我是否可以使用 xsl (1.0) 转换 xml,但即使其中没​​有内容也保留 CDATA 元素。作为 xsl 初学者,我对这个问题有点不知所措......

这是一个简单的示例。

我拥有的

<AMOUNT/>
Run Code Online (Sandbox Code Playgroud)

我想要的是

<AMOUNT><![CDATA[]]></AMOUNT>
Run Code Online (Sandbox Code Playgroud)
  • 有没有办法强制没有内容的空 cdata 段?
  • 有没有办法对文件中的所有元素执行此操作?
  • 有没有办法只针对cdata-section-elements 中的那些

(看看 AMOUNT 元素)

这是我的示例 xml

<?xml version="1.0" encoding="iso-8859-1" ?>
    <Artikel>
        <Temp>
            <Zeile>107</Zeile>
            <Artikelzubehoerdaten>
                <Artikelzubehoerdaten>
                    <ZubehoerID>18</ZubehoerID>
                    <Mandant>88</Mandant>
                    <UrsprungsArt>1</UrsprungsArt>
                    <Ursprungsnummer>99100091</Ursprungsnummer>
                    <UrsprungsAuspraegungID>0</UrsprungsAuspraegungID>
                    <ZubehoerArt>1</ZubehoerArt>
                    <Zubehoernummer>00500041</Zubehoernummer>
                    <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID>
                    <Automatisch>0</Automatisch>
                    <Mengenberechnung>1</Mengenberechnung>
                    <MengenFaktor>1.0000</MengenFaktor>
                    <Basismengeneinheit>Stk</Basismengeneinheit>
                    <Preisgrundlagen>2</Preisgrundlagen>
                    <ManuellerPreis>0.0000</ManuellerPreis>
                    <PreislisteID>0</PreislisteID>
                    <Timestamp>AAAAAAAEbVw=</Timestamp>
                    <Gruppendaten/>
                </Artikelzubehoerdaten>
                <Artikelzubehoerdaten>
                    <ZubehoerID>19</ZubehoerID>
                    <Mandant>88</Mandant>
                    <UrsprungsArt>1</UrsprungsArt>
                    <Ursprungsnummer>99100091</Ursprungsnummer>
                    <UrsprungsAuspraegungID>0</UrsprungsAuspraegungID>
                    <ZubehoerArt>2</ZubehoerArt>
                    <Zubehoernummer>100</Zubehoernummer>
                    <Automatisch>0</Automatisch>
                    <Mengenberechnung>0</Mengenberechnung>
                    <MengenFaktor>0.0000</MengenFaktor>
                    <Preisgrundlagen>0</Preisgrundlagen>
                    <ManuellerPreis>0.0000</ManuellerPreis>
                    <PreislisteID>0</PreislisteID>
                    <Timestamp>AAAAAAAEbWA=</Timestamp>
                    <Gruppendaten>
                        <ZubehoerID>1</ZubehoerID>
                        <Mandant>88</Mandant>
                        <UrsprungsArt>2</UrsprungsArt>
                        <Ursprungsnummer>100</Ursprungsnummer>
                        <ZubehoerArt>1</ZubehoerArt>
                        <Zubehoernummer>10300003</Zubehoernummer>
                        <ZubehoerAuspraegungID>0</ZubehoerAuspraegungID>
                        <Automatisch>0</Automatisch>
                        <Mengenberechnung>2</Mengenberechnung>
                        <MengenFaktor>1.0000</MengenFaktor> …
Run Code Online (Sandbox Code Playgroud)

xml xslt cdata xslt-1.0

2
推荐指数
1
解决办法
3231
查看次数

XML和XSLT保留CDATA

我正在开发一个项目,其中包括在xml上应用一些xslt.

我的输入xml在任何xml节点中都包含"CDATA".

现在我想要的是它应该保留"CDATA",如果它在输入中

我尝试了许多解决方案,如disable-output-escaping和cdata-section-elements等...但我发现它们都不适合我的要求.

那么,有什么方法可以做到吗?如果输入xml节点有cdata,那么如果输入xml节点没有cdata那么它应该在输出中给它,那么它不应该在输出中给它.

我有一个节点叫做包含cdata和另一个节点在一些不包含cdata的差异位置..

<Address>
<Location>
<Code>912</Code>
<Value>10301</Value>
</Location>
<Name><![CDATA[E&S]]></Name>
<CompanyName><![CDATA[E&S]]></CompanyName>
<AddressLine3>dummy address</AddressLine3>
<City>dummy city</City>
<State>dummy state</State>
<PostalCode>dummy postal code</PostalCode>
<Country>dummy country</Country>
</Address>
<Nodes>
<Node>
<Type>CTU</Type>
<Text><![CDATA[dummy text & dummy Text.]]></Text>
</Node>
</Nodes>
Run Code Online (Sandbox Code Playgroud)

不固定的是,只有预定义的节点将包含它可以到达任何地方的cdata

xml xslt cdata

2
推荐指数
1
解决办法
9923
查看次数

UnknownFormatConversionException:Android strings.xml format <![CDATA [...%1 $ ...]]>

我正在尝试在strings.xml中使用格式化的html .所以在strings.xml中我有以下内容:

<string name="application_start_message" formatted="false">
    <![CDATA[ bla bla bla %1$ bla bla bla %1$.... ]]>
<string name="application_website_url">website.com</string>
Run Code Online (Sandbox Code Playgroud)

后来我在代码中做了:

String string = getString(
    R.string.application_start_message,
    getString(R.string.application_website_url)
);
Run Code Online (Sandbox Code Playgroud)

我得到的运行时异常是:

java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.artigile.checkmyphone/
    com.artigile.checkmyphone.MainActivity}: 
    java.util.UnknownFormatConversionException: Conversion: <
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Caused by: java.util.UnknownFormatConversionException: Conversion: <
at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1399)
at java.util.Formatter$FormatToken.checkFlags(Formatter.java:1336)
at java.util.Formatter.transform(Formatter.java:1442)
at java.util.Formatter.doFormat(Formatter.java:1081)
at …
Run Code Online (Sandbox Code Playgroud)

formatting android cdata android-xml

2
推荐指数
1
解决办法
1991
查看次数

XSL 在 CDATA 中取消转义 HTML

我正在尝试转换 XML:

 <catalog>
            <country><![CDATA[ WIN8 &lt;b&gt;X&lt;/b&gt; Mac OS ]]></country>
    </catalog>
Run Code Online (Sandbox Code Playgroud)

进入

<catalog>
        <country><![CDATA[  WIN8 <b>X</b> Mac OS ]]></country>        
</catalog>
Run Code Online (Sandbox Code Playgroud)

使用 XSL 转换。

我知道使用disable-output-escaping =“yes”或cdata-section-elements我可以将转义字符转换为未转义并放入CDATA中,但如果字符已经在CDATA中,则这不起作用。

有一个简单的方法吗?谢谢。

xml xslt cdata html-escape-characters

2
推荐指数
1
解决办法
4895
查看次数

如何在 HTML 中注释 &lt;![CDATA[

假设你有以下代码<head>

<head>
  <!--
  <script type="text/javascript">
  //<![CDATA[
      SOME JS
  //]]>
  </script>
  -->
</head>
Run Code Online (Sandbox Code Playgroud)

它实际上有评论吗?

html cdata

2
推荐指数
1
解决办法
8827
查看次数

从rss feed中读取cdata

我正在使用简单的代码阅读RSS订阅源:

 <?php
$homepage = file_get_contents('http://www.forbes.com/news/index.xml');
$movies = new SimpleXMLElement($homepage);
echo '<pre>';
print_r($movies);
?>
Run Code Online (Sandbox Code Playgroud)

和输出如下:SimpleXMLElement Object([@attributes] => Array([version] => 2.0)

[channel] => SimpleXMLElement Object
    (
        [title] => SimpleXMLElement Object
            (
            )

        [link] => SimpleXMLElement Object
            (
            )

        [description] => SimpleXMLElement Object
            (
            )

        [language] => en-us
        [copyright] => Copyright 2009 Forbes.com LLC
        [item] => Array
            (
                [0] => SimpleXMLElement Object
                    (
                        [title] => SimpleXMLElement Object
                            (
                            )

                        [link] => SimpleXMLElement Object
                            (
                            )

                        [author] => SimpleXMLElement Object
                            (
                            )

                        [pubDate] => …
Run Code Online (Sandbox Code Playgroud)

php xml cdata

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