簡體   English   中英

處理 xslt 中的 Json 文本以進行 Xml 到 html 的轉換

[英]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="{&#34;properties&#34; : [ {&#34;id&#34; : &#34;1&#34;,&#34;name&#34; : &#34;A&#34;,&#34;owner&#34; : &#34;XXX&#34;} ] }"></span><span json="{&#34;properties&#34; : [ {&#34;id&#34; : &#34;2&#34;,&#34;name&#34; : &#34;B&#34;,&#34;owner&#34; : &#34;yyy&#34;} ] }"></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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM