【问题标题】:How to read values from JSON embedded in XML with XSLT?如何使用 XSLT 从嵌入在 XML 中的 JSON 读取值?
【发布时间】:2021-12-28 05:33:20
【问题描述】:

这是我的 XML,我想将其转换为 DOT:

<Import>
  <Row>
    <id>1</id>
    <parentmenu>siasn-instansi</parentmenu>
    <label>Layanan Profile ASN</label>
    <role_id>1</role_id>
    <role>role:siasn-instansi:profilasn:viewprofil</role>
    <items>[{"url": "/tampilanData/pns", "label": "Profile Pegawai", "subMenu": "pns"}, {"url": "/tampilanData/pppk", "label": "Profile Pegawai PPPK", "subMenu": "pppk"}, {"url": "/tampilanData/JPTNonASN", "label": "Profile Pegawai PPT Non-ASN", "subMenu": "ppt"}]</items>
  </Row>
</Import>

下面是我的带有 DOT 文件规则的 XSL 代码的图片。

XSL 代码:

问题是,我想从&lt;items&gt; 获取值,如下所示:

  • /displayData/pns
  • /displayData/pppk
  • /displayData/JPTNoASN

并且我想将上面的值点放入我的 XSL 中,如图中红色所示。

XSL 看起来如何可以从我的 XML 中获取值? &lt;items&gt; 值非常困难,与我设法采用的 &lt;role&gt; 值不同。

【问题讨论】:

  • 请将您的代码作为代码发布在您的问题中,而不是外部链接中的图片。还包括您期望获得的确切结果(作为代码)并说明您可以使用哪个版本的 XSLT。
  • 注意:我已经清理了你的代码。我假设&lt;items&gt; 实际上 包含 JSON,并且当您创建 XML 示例时,该 JSON 中缺少的右引号是复制/粘贴事故,所以我修复了它们。此外,&amp;quot;" 在此 XML 中完全相同,因此我使用了 " 以使其更具可读性。请检查 XML 样本并确认。当然,按照 Michael 的要求,以文本形式输入您的 XSLT 代码并说明您的 XSLT 版本。
  • 这个问题可能会有所帮助:stackoverflow.com/questions/13007280/…

标签: json xml xslt dot


【解决方案1】:

在 XSLT 3.0 中你可以这样做,例如:

<xsl:template match="items">
  <xsl:variable name="content" select="parse-json(.)/*" as="map(*)*"/>
  <xsl:for-each select="$content">
    url="{?url}"
    label="{?label}"
    menu="{?subMenu}"
  </xsl:for-each>
</xsl:template>

parse-json() 函数返回一个地图数组; "/*" 运算符将其转换为一系列映射;构造 ?url 访问映射中的特定条目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多