【发布时间】:2018-03-24 04:08:06
【问题描述】:
我习惯于创建 XML 文件,但对于创建自己的 XSD 文件来验证 XML 内容是很陌生的。所以我想问几个关于 XSD 文件的问题。
首先,我有一个 XML 文件。现在我需要创建一个 XSD 文件来严格验证 XML 内容。但我也想使用相同的 XSD 文件在我的网站中生成一些 UI 供用户输入值。就像对于每个标签或每个标签内的每个属性一样,我们将有 1 个输入、选择框、切换按钮等。之后,使用输入的值和 XSD 文件结构生成 XML 文件。
但是现在我对这两种情况有一个问题:
我需要一个标签来向我们的用户显示这个输入字段的用途。我可以在每个标签中放置一个具有固定值的属性以将其用于标签。但是 out XML 标签不需要这个属性。那么如何在 XSD 文件中添加一些东西来存储每个标签的标签而不影响 XML 文件呢?
我想创建一个下拉列表,选择其中一个值,然后在生成时,XML 文件会将所选值作为其属性值之一。要做到这一点,我可以使用枚举约束来使用限制。但有时该值很难理解,因此我需要显示其他内容,例如值为 1 但文本显示为“正在运行”。这有点像上面的问题,但需要限制部分。
那么任何人都可以帮助我解决这两个案例。我应该在 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:
以value作为每个选项的值,label作为每个选项的显示文本。当用户选择例如选项 2 是高尔夫时,生成的 xml 将是这样的:
<car>Golf</car>
所以这些标签纯粹是为了生成 UI,与 xml 无关。
【问题讨论】:
-
请阅读how to ask useful questions。您至少有 2 个不同的问题:XSD + XML 和 XML +(特定的操作系统使用)。
-
@LuisMuñoz:为什么 XSD + XML 和 XML +(特定的操作系统使用)有问题?我想要在这里为 XSD 文件添加一些与 XML 验证无关的值,以便我可以将它们用于其他目的
-
我的意思是你问了一个太冒昧的问题,如何使用 xsd 构建 xml 以及如何将该 xml 应用于特定用途。这就是我将您指向 MCVE 帮助页面的原因。
-
@LuisMuñoz :不,我没有要求使用 xsd 构建 xml,而是要求将某些内容放入 xsd 并将 xsd 文件用于其他内容。您可以查看更新后的问题。
-
请添加预期的 xml 输出。你可能需要<xs:complexType>