【问题标题】:traverse json data using xslt使用 xslt 遍历 json 数据
【发布时间】:2021-10-04 05:52:42
【问题描述】:

这是我的 xslt 输入:-

{
    "array1": [
        {
            "id": "banglore",
            "mappingData": [
                {
                    "name": "v1"
                },
                {
                    "name": "v2",
                    "Data": [
                        {
                            "idFromIndia": "0001"
                        }
                    ]
                }
            ]
        }
    ]
}

我正在寻找选择<xsl:value-of select="concat(?idFromIndia,'|')"/>

我正在使用 parse-json 方法解析输入 json;

<xsl:variable name="input-as-map" select="parse-json($input)" as="map(*)"/>

$input-as-map?array1*mappingData

我试图使用通配符方法进行遍历,但我不适合我。

任何建议都会有所帮助.......

【问题讨论】:

  • 不清楚您要输出哪个结果,请编辑您的问题并准确显示您的结果应具有的格式和内容。
  • 在询问 XSLT 问题时,您需要提供 minimal reproducible example: (1) 输入 XML。 (2) 你的逻辑,以及试图实现它的 XSLT。 (3) 期望的输出。 (4) XSLT 处理器及其对 XSLT 标准的遵从性:1.0、2.0 或 3.0。
  • @YitzhakKhabinsky,虽然我同意这个问题可以改进,但如果问题显然使用 XPath 3.1 和 XSLT 3 处理 JSON,我认为要求强制 XML 输入是没有意义的。即使在 XSLT 中2 您可以从命名模板开始,而不需要 XML 输入文档。
  • @MartinHonnen,没有最少的复制,问题和答案对于 OP 之外的任何人都无法使用。
  • 您需要详细说明您要提取哪种格式的数据,在哪种上下文中使用像<xsl:value-of select="concat(?idFromIndia,'|')"/> 这样的 sn-p 以及您遇到的错误。

标签: xml xslt xslt-3.0


【解决方案1】:

<xsl:value-of select="$input-as-map?array1?*?mappingData?*?Data?*?idFromIndia"/> 应该给你0001<xsl:value-of select="$input-as-map?array1?*?mappingData?*?Data?*?idFromIndia || '|'"/> 应该给你0001|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    相关资源
    最近更新 更多