在XSD

时间:2018-03-22 21:24:00

标签: xml xsd

我习惯于创建XML文件,但是创建我自己的XSD文件以验证XML内容还是很新的。所以我想问几个关于XSD文件的问题。

首先,我有一个XML文件。现在我需要创建一个XSD文件来严格验证XML内容。但我也想使用相同的XSD文件在我的网站中生成一些用户界面来输入值。对于每个标签或每个标签中的每个属性,我们将有1个输入,选择框,切换按钮等。之后,使用输入的值和XSD文件结构生成XML文件。

但现在我对这两种情况有疑问:

  1. 我需要一个标签来向我们的用户显示此输入字段的内容。我可以在每个标记中放置一个具有固定值的属性,以将其用于标签。但是out XML标签不需要这个属性。那么如何在XSD文件中添加一些东西来存储每个标签的标签而不影响XML文件呢?

  2. 我想创建一个下拉列表,选择其中一个值,然后在生成时,XML文件将所选值作为其属性值之一。好吧,我可以使用枚举约束来限制。但有时候这个值很难理解,所以我需要用其他东西来表示,比如值为1,但文本显示为“正在运行”。这有点像上面的问题,但需要限制部分。

  3. 所以任何人都可以帮助我解决这两起案件。我应该在XSD文件中使用什么标记属性将这些不相关的信息存储到XML文件中?

    谢谢你。

    =============================================== =====

    更新:更具体地说明我的问题。 例如,我在我的xsd文件中有这个

    <xs:element name="car">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Audi"/>
          <xs:enumeration value="Golf"/>
          <xs:enumeration value="BMW"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element> 
    

    这个只有一个限制值来验证xml标记。但我想为每个枚举标记添加另一个值来存储标签或类似的东西:

    <xs:element name="car">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="Audi" label="Option 1"/>
          <xs:enumeration value="Golf" label="Option 2"/>
          <xs:enumeration value="BMW" label="Option 3"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element> 
    

    这个添加的东西不会使xsd文件无效也不会影响xml文件的验证。

    =============================================== =============

    更新2:

    我需要使用xsd文件来生成这样的UI selectbox

    将值作为每个选项的值,并将标签作为每个选项的显示文本。当用户选择例如高尔夫的选项2时,生成xml将如下所示:

    <car>Golf</car>
    

    因此,这些标签纯粹用于生成UI,与xml无关。

1 个答案:

答案 0 :(得分:2)

1。您可以使用<xsd:annotation>

<xs:annotation>
 <xs:appinfo>
    <!-- Add arbitrary xml here e.g. -->
    <label>Audi</label>
 </xs:appinfo>
</xs:annotation>

只需将注释放在元素旁边即可。

2。了解其他人如何将xsd:annotation用于类似目的。

- how to use annotations on an enumeration上的示例

- 基于xsd xsd-forms

的表单生成工具

3. 类似的问题:

Toolkits or Applications That Build UI From Xsd