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 中提供的信息。即应该应用什么验证器来缩放以及我想在缩放单元格上显示什么小部件?ETC..

4

1 回答 1

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。

于 2017-05-22T11:37:20.013 回答