我们可以提供XSD属性元数据吗?

时间:2017-05-22 09:39:38

标签: xml xsd xsd-validation xsd-1.0

我在XSD之下:

    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="https://www.w3schools.com"
           xmlns="https://www.w3schools.com"
           elementFormDefault="qualified">
    <xs:element name="rootNode" type="records" />
    <xs:complexType name="records">
        <xs:sequence>
            <xs:element name="element1" type="type-attrbute-grp" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="type-attrbute-grp">
        <xs:attributeGroup ref="attribute-grp" />
    </xs:complexType>
    <xs:attributeGroup name="attribute-grp">
        <xs:attribute name="scale" type="xs:int" use="required" />
        <xs:attribute name="date" type="xs:date" use="required" />
    </xs:attributeGroup>
 </xs:schema>

我创建了以下XML:

 <?xml version="1.0" encoding="UTF-8"?>
<p:rootNode xmlns:p="https://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.w3schools.com test2.xsd ">
  <p:element1 date="2001-01-01" scale="7"/>
</p:rootNode>

我们可以提供有关具有属性的元素的更多信息。但是,我的问题是我们可以提供有关属性的元数据吗? 我的目标是在UI中将“element1”显示为表格行,将“date”/“scale”显示为表格的列。另外,我想为比例和日期列添加一些验证以及我想在XSD中提供的信息。即应该应用什么验证器进行缩放以及我想在比例单元格上显示哪个小部件?等。

1 个答案:

答案 0 :(得分:1)

您可以将自己的元数据添加到大多数xsd实体。你用它做什么然后由应用程序消耗它。

在以下示例中,MyColumnInfo元素已附加到scale属性。

<xs:attribute name="scale" type="xs:int" use="required">
  <xs:annotation>
    <xs:appinfo>
      <MyColumnInfo width="10" xmlns="" />
    </xs:appinfo>
  </xs:annotation>
</xs:attribute>

大多数SOM(架构对象模型)解析器将允许您访问此信息。但解析模式往往有点棘手,所以看似快速的工作可能会迅速变成一项相当大的任务。

在.Net中,您有XsdSchema类,您可以将该模式读入并导航。在java中,您可以使用xerces。