[英]how can I add attribute to a XML CDATA Tags?
XML:
<?xml version="1.0" encoding="UTF-9" ?>
<mailAndMessageSettings>
<settings>
<add key="Url" value=""/>
<add key="UserName" value=""/>
<add key="Password" value=""/>
</settings>
<mail>
<subject>
Mp3 Submission
</subject>
<body>
<![CDATA[
<meta http-equiv="Content-Type" content="text/html; charset="utf-8""/>
<head></head>
<body>
<p>Hi,</p>
<p>Please find the attached mp3... :-)</p>
<p><a href="mymp3.mp33">here</a></p>
<p>Regards,</br>
Pete</p>
</body>
</html>
]]>
</body>
</mail>
</mailAndMessageSettings>
XSLT:
<xsl:template match="/">
<xsl:value-of select="/mailAndMessageSettings/mail" disable-output-escaping="yes"/>
</xsl:template>
預期產量:
<mail>
<subject>
Mp3 Submission
</subject>
<body>
<![CDATA[
<meta http-equiv="Content-Type" content="text/html; charset="utf-8""/>
<head></head>
<body>
<p>Hi,</p>
<p>Please find the attached mp3... :-)</p>
<p><a href="mymp3.mp3" onclick="myfunction();">here</a></p>
<p>Regards,</br>
Pete</p>
</body>
</html>
]]>
</body>
</mail>
我想在CDATA中的“這里”上添加屬性“ onclick”並獲取整個“郵件”節點嗎? 真的有可能嗎? 有人可以幫我這個忙嗎? 提前致謝。 您的幫助將不勝感激:)
CDATA節內沒有節點或標簽。 CDATA的意思是“字符數據”。 將內容放入CDATA的唯一原因是說“此處的內容可能看起來像標記,但我不希望將其視為標記;僅將其視為文本”。 因此,如果您要將其視為標記,請不要將其放入CDATA中。
您必須采用字符串操作,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="body[contains(.,'>here</a>')]">
<xsl:value-of disable-output-escaping="yes" select="concat(
'<![CDATA[',
substring-before(.,'>here</a>'),
' onclick="myfunction();">here</a>',
substring-after(.,'>here</a>'),
']]>'
)"/>
</xsl:template>
</xsl:stylesheet>
但是,為什么郵件正文必須首先是CDATA是有原因的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.