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

Can we provide XSD attribute meta data?

我有以下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" 显示为 table 行,将 "date"/"scale" 显示为 table 的列。此外,我想为刻度和日期列以及我想在 XSD 中提供的信息添加一些验证。即应该将什么验证器应用于缩放以及我想在缩放单元格上显示什么小部件?等..

您可以将自己的元数据添加到大多数 xsd 实体。你用它做什么取决于使用它的应用程序。

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

<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 class,您可以将架构读入其中并进行导航。在 java 中,您可以使用 xerces。