首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xml模式可以根据另一个元素值的存在来验证元素值吗?

xml模式可以根据另一个元素值的存在来验证元素值吗?
EN

Stack Overflow用户
提问于 2017-12-14 15:32:08
回答 1查看 412关注 0票数 0

我是xml/xsd方面的新手,希望能就验证元素值的问题提供一些建议。

我正在开发一个系统,以配合课程内的课程。课程将由一组课程组成,每门课程都有一些特点,包括一个id。

课程的先决条件是id,它对应于xml中指定的其他课程。

是否有一种方法来验证先决条件元素中的id数作为另一个元素的课程id存在?

下面是我从模式开始的步骤。

谢谢你能给我的任何建议。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    targetNamespace="some relevant uri"
    xmlns:ap="some relevant uri">

  <xs:element name="course">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ap:id"/>
                <xs:element ref="ap:prerequisite" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
  </xs:element>

  <xs:element name="id" type=?????>
  </xs:element>

  <xs:element name="prerequisite" type=?????>
  </xs:element>

</xs:schema>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 18:31:49

您可以使用xs:key和xs:keyref来实现这一点。希望知道关键字将使您能够找到您最喜欢的XML教科书中的相关章节.

主要要记住的是,这些声明必须作为约束适用的元素的元素声明的一部分出现:如果规则是“在X中,则每个Y必须对Z有一个不同的值,而每个V必须有一个与某些Y的Z值匹配的值(在同一个X中)”。

  • 在X的声明中,用name = N,selection = Y,field =Z定义一个键
  • 在X的声明中,定义一个keyref,其中ref = N,selection = V,field = W。

在你的例子中,Y是过程,Z是id,V是先决条件,W是id。我不知道X是什么,但它可能是你的课程元素的父母。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47816963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档