如何使用转义/序列化XML定义XML的XSD?

时间:2016-06-15 14:07:40

标签: xml xpath xsd

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

我正在研究如何:

  1. 正确定义此XML的架构,以便嵌套字段 也定义了。
  2. 根据定义,可以查询任何字段。
  3. 像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>
    

2 个答案:

答案 0 :(得分:0)

您的有效负载只是一个文本字符串,甚至只会被解释为文本。如果要在有效负载上使用xsd / xpath或xsl,首先需要确保将其序列化为xml。 还要注意,任何PI(你的&lt;?xml ...&gt;)在埋藏在有效负载内时都会产生无效的xml,因此你需要摆脱它。

答案 1 :(得分:0)

  

我正在研究如何:

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

您已经通过在payload元素中传输转义的XML而不是实际的XML来丢失游戏。

修复此错误设计并使用payload中的实际XML,以便利用XSD进行验证。

如果您无法修复设计,请在初步过程中将序列化的XML重构为实际的XML。然后将其视为可以编写XSD的真实XML,可以根据需要使用xsd:any

  
      
  1. 根据定义,可以查询任何字段。
  2.   

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