XSD 中相同元素名称的不同验证

发布于 2024-12-18 01:57:46 字数 257 浏览 5 评论 0原文

我有一个像这样的 XML 文件:

<myNode>
   <myProperty name="Title" value="MyTitle" />
   <myProperty name="ProductId" value="123456" />
</myNode>

是否可以编写 XSD 来验证第一个属性(“Title”)必须是字符串,第二个属性(“ProductId”)必须是整数?

I have a XML file like this:

<myNode>
   <myProperty name="Title" value="MyTitle" />
   <myProperty name="ProductId" value="123456" />
</myNode>

Is it possible to write an XSD to validate that the first property ("Title") must be a string, and the second property ("ProductId") must be an integer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

累赘 2024-12-25 01:57:46

不幸的是你不能这样做。 XML 的 XSD 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    attributeFormDefault="unqualified"
    elementFormDefault="qualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myNode">
    <xs:complexType>
      <xs:sequence>

        <xs:element maxOccurs="unbounded" name="myProperty">
          <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required" />
            <xs:attribute name="value" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

要解决您的问题,您可以为以下 XML 创建 XSD:

<myNode>
    <Properties>
       <Title value="MyTitle" />
       <ProductId value="123456" />
    </Properties>
</myNode>

Unfortunatly you can't do that. XSD for your XML looks like:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    attributeFormDefault="unqualified"
    elementFormDefault="qualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="myNode">
    <xs:complexType>
      <xs:sequence>

        <xs:element maxOccurs="unbounded" name="myProperty">
          <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required" />
            <xs:attribute name="value" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

To solve your issue you can create XSD for folowing XML:

<myNode>
    <Properties>
       <Title value="MyTitle" />
       <ProductId value="123456" />
    </Properties>
</myNode>
皇甫轩 2024-12-25 01:57:46

不,您不能使用 XSD 做到这一点。看看 http://www.schematron.com/ 是否可以帮助您。

No you can't do that with XSD. See if http://www.schematron.com/ can help you with this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文