【问题标题】:How to define an XSD for XML with escaped/serialized XML in it?如何为其中包含转义/序列化 XML 的 XML 定义 XSD?
【发布时间】:2016-06-15 14:07:39
【问题描述】:

我有一个 XML,它在其中一个元素中包含嵌套的序列化 XML。有效负载也是一个有效的格式 XML。此外,有效负载可以包含更多级别的嵌套...

我正在研究如何:

  1. 正确定义此 XML 的架构,以便嵌套字段 也定义了。
  2. 通过定义,可以查询任意字段。

像 XSD 这样的 XML Schema 标准是否支持这种嵌套的 XML?我们可以使用任何 XML 搜索路径工具(如 XPath)来正确搜索嵌套字段吗?

<?xml version="1.0" encoding="UTF-8"?>
<event>
<header>
    <field1>Value</field1>
    <field2>Value</field2>
</header>
<body>
    <payload>&lt;?xmlversion=&quot;1.0&quot;encoding=&quot;UTF-8&quot;?&gt;&lt;event&gt;&lt;header&gt;&lt;field1&gt;Value&lt;/field1&gt;&lt;field2&gt;Value&lt;/field2&gt;&lt;/header&gt;&lt;body&gt;&lt;payload&gt;&lt;/payload&gt;&lt;/body&gt;&lt;/event&gt;
    </payload>
</body>
</event>

【问题讨论】:

    标签: xml xpath xsd


    【解决方案1】:

    您的有效负载只是一个文本字符串,甚至只会被解释为文本。如果您想在有效负载上使用 xsd/xpath 或 xsl,您首先需要确保它被序列化为 xml。 另请注意,任何 PI(您的 )在嵌入有效负载时都会产生无效的 xml,因此您需要摆脱它。

    【讨论】:

      【解决方案2】:

      我正在研究如何:

      1. 正确定义此 XML 的架构,以便嵌套字段 也定义了。

      payload 元素中传输转义的 XML 而不是实际的 XML,你已经输了。

      修复这个糟糕的设计并在payload 中使用实际的 XML,以便利用 XSD 进行验证。

      如果您无法修复设计,请在初步阶段将序列化的 XML 重构为实际的 XML。然后将其视为真正的 XML,您可以针对它编写 XSD,可能需要使用xsd:any

      1. 通过定义,可以查询任意字段。

      再次,修复您的设计或重新解析为实际的 XML。然后你可以使用 XPath。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 2010-10-13
        • 2011-01-28
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        相关资源
        最近更新 更多