[英]Handling Json text in xslt for Xml to html transformation
我正在嘗試將 XML 轉換為 HTML,並且某些 HTML 元素需要將 JSON 文本保存為從 XML 轉換而來的屬性值。 但是轉換后,我無法在屬性中獲得 JSON 的正確輸出,請幫助我解決由於 " 是雙引號引起的困惑
XML:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<sub id="1" name="A" owner="XXX">text</sub>
<sub id="2" name="B" owner="yyy">text</sub>
</main>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<p>
<xsl:for-each select="main/sub">
<span>
<xsl:attribute name="json">
<xsl:text>{"properties" : [ {</xsl:text>
<xsl:for-each select="./@*">
<xsl:if test="name() = 'id'"><xsl:text>"id" : "</xsl:text><xsl:value-of select="." /><xsl:text>",</xsl:text></xsl:if>
<xsl:if test="name() = 'name'"><xsl:text>"name" : "</xsl:text><xsl:value-of select="." /><xsl:text>",</xsl:text></xsl:if>
<xsl:if test="name() = 'owner'"><xsl:text>"owner" : "</xsl:text><xsl:value-of select="." /><xsl:text>"</xsl:text></xsl:if>
</xsl:for-each>
<xsl:text>} ] }</xsl:text>
</xsl:attribute>
</span>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
實際輸出:
<html>
<body>
<p><span json="{"properties" : [ {"id" : "1","name" : "A","owner" : "XXX"} ] }"></span><span json="{"properties" : [ {"id" : "2","name" : "B","owner" : "yyy"} ] }"></span></p>
</body>
</html>
預期產出
<html>
<body>
<p><span json="{"properties" : [ {"id" : "1","name" : "A","owner" : "XXX"} ] }"></span><span json="{"properties" : [ {"id" : "2","name" : "B","owner" : "yyy"} ] }"></span></p>
</body>
</html>
您的預期輸出不是格式良好的 HTML,並且無法由任何 HTML 解析器處理,即使它非常寬松。 它應該如何判斷@json 屬性中的哪個雙引號表示屬性值的結尾? 所以你需要改變你對輸出的期望。
引號已轉義的實際輸出應該可以正常工作。
除了它實際上不是有效的 JSON:在對象"{...}"
您需要關鍵字-值對,而不是一個空值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.