验证 XML,使 Edge 中节点中的值应存在于节点>节点中,否则无效

validate xml in a way that a value in a node in edge should be present in the nodes > node otherwise that is not valid

提问人:Learner 提问时间:10/20/2023 最后编辑:Learner 更新时间:10/21/2023 访问量:45

问:

我有一个场景,我需要以一种方式验证 xml,即边缘节点中的值应该存在于节点>节点中,否则无效

<graph>
   <nodes>
     <node>
       <id>1</id>
     </node>
   <nodes>
   <edges>
     <from> 1 </from>
     <to> 4 </to> 
   </edges>
   <name>test</name>

所以上面是无效的,因为节点>节点中不存在 A 到 4 是否可以在 xsd:schema 中进行这种验证?

更新以了解更多说明: 所以这是一个有效的图表

<graph>
   <nodes>
     <node>
       <id>1</id>
     </node>
     <node>
       <id>4</id>
     </node>
   <nodes>
   <edges>
     <from> 1 </from>
     <to> 4 </to> 
   </edges>
   <name>test</name>
因为节点 1 和 4 都存在于节点部分中,所以它们可以在边中使用 然而在这里
  <graph>
       <nodes>
         <node>
           <id>1</id>
         </node>
       <nodes>
       <edges>
         <from> 1 </from>
         <to> 4 </to> 
       </edges>
       <name>test</name>
</graph>

4 未在节点部分中定义,因此应验证为无效

这是我的XML:

<graph>
    <id>g0</id>
    <name>test</name>
    <nodes>
        <node>
            <id>a</id>
            <name>a name</name>
        </node>
    </nodes>
    <edges>
        <node>
            <id>e1</id>
            <from>a</from>
            <to>b</to>
            <cost>42</cost>
        </node>
        <node>
            <id>e5</id>
            <from>a</from>
            <to>c</to>
            <cost>0.42</cost>
        </node>
    </edges>
</graph>

(注意不确定它是否重要,但我使用 lxml Pyhton 库进行验证)

XSLT XSD XML 解析

评论

0赞 Yitzhak Khabinsky 10/20/2023
目前尚不清楚您需要什么。请编辑您的问题,并提供一些其他信息。
0赞 Learner 10/20/2023
当然,谢谢你的建议。更新了它
0赞 Yitzhak Khabinsky 10/20/2023
XSD 1.1 可以做到
0赞 Yitzhak Khabinsky 10/21/2023
在提出 XSD 问题时,您需要提供一个最小的可重现示例:(1) 格式正确的输入 XML。(2) 你的逻辑,以及尝试实现它的完整 XSD。(3) XSD 处理器及其符合 XSD 标准:1.0 或 1.1。
0赞 Learner 10/21/2023
我添加了我正在尝试验证的完整 xml。问题是我不确定是否有可能,对这个特定的限制一无所知。我知道有一个 keyref,但它只支持属性,它与值/文本依赖关系无关

答: 暂无答案