使用 XSD 确保 XML 验证中的字符串不为空
Make sure string is not empty in XML validation with XSD
我有一个 XML
文件,如下所示。我想确保 menonic
始终存在并且不是空字符串。
我在 XSD 中这样设置 use="required"
<xs:attribute type="xs:string" name="mnemonic" use="required"/>
它确保该字段存在。
但是当字符串为空时如下所示
<recipeStructureDef mnemonic="" title="Recipe.Bread">
它通过了验证。
有什么方法可以检查字符串是否不是空字符串?
谢谢,请在下面找到 xml 和 xsd 文件。
<recipeStructureDef mnemonic="Rice Bag" title="Recipe.Bread">
<description>
</description>
<parametersTab>
<parameterTabDef title="Main Parameters">
<parameterGroup title="Product Rice">
</parameterGroup>
</parameterTabDef>
</parametersTab>
</recipeStructureDef>
需要 OP:
<xs:complexType name="recipeStructureDefType">
<xs:sequence>
<xs:element type="xs:string" name="description"/>
<xs:element type="parametersTabType" name="parametersTab"/>
</xs:sequence>
<xs:attribute type="xs:string" name="mnemonic" use="required"/>
<xs:attribute type="xs:string" name="title"/>
</xs:complexType>
属性 @mnemonic
必须存在:
<xs:attribute name="mnemonic" use="required" type="nonEmptyString"/>
^^^^^^^^^^^^^^
@mnemonic
的属性值不能为空:
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
简单类型 xs:string 是没有规则或约束的普通字符串。您需要创建一个具有一些约束的简单类型(在 XML 架构中称为 'facets'),并在助记符属性的定义中使用该简单类型。
<xs:simpleType name="mnemonicType" >
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
<xs:simpleType>
<xs:complexType name="recipeStructureDefType">
<xs:sequence>
<xs:element type="xs:string" name="description"/>
<xs:element type="parametersTabType" name="parametersTab"/>
</xs:sequence>
<xs:attribute type="mnemonicType" name="mnemonic" use="required"/>
<xs:attribute type="xs:string" name="title"/>
</xs:complexType>
您可能想要指定一个以上字符的最小长度,minLength 构面是您可以用来限制简单值的众多构面之一。查看 XML 架构规范以获取完整列表:https://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes
我有一个 XML
文件,如下所示。我想确保 menonic
始终存在并且不是空字符串。
我在 XSD 中这样设置 use="required"
<xs:attribute type="xs:string" name="mnemonic" use="required"/>
它确保该字段存在。
但是当字符串为空时如下所示
<recipeStructureDef mnemonic="" title="Recipe.Bread">
它通过了验证。
有什么方法可以检查字符串是否不是空字符串?
谢谢,请在下面找到 xml 和 xsd 文件。
<recipeStructureDef mnemonic="Rice Bag" title="Recipe.Bread">
<description>
</description>
<parametersTab>
<parameterTabDef title="Main Parameters">
<parameterGroup title="Product Rice">
</parameterGroup>
</parameterTabDef>
</parametersTab>
</recipeStructureDef>
需要 OP:
<xs:complexType name="recipeStructureDefType">
<xs:sequence>
<xs:element type="xs:string" name="description"/>
<xs:element type="parametersTabType" name="parametersTab"/>
</xs:sequence>
<xs:attribute type="xs:string" name="mnemonic" use="required"/>
<xs:attribute type="xs:string" name="title"/>
</xs:complexType>
属性 @mnemonic
必须存在:
<xs:attribute name="mnemonic" use="required" type="nonEmptyString"/>
^^^^^^^^^^^^^^
@mnemonic
的属性值不能为空:
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
简单类型 xs:string 是没有规则或约束的普通字符串。您需要创建一个具有一些约束的简单类型(在 XML 架构中称为 'facets'),并在助记符属性的定义中使用该简单类型。
<xs:simpleType name="mnemonicType" >
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
<xs:simpleType>
<xs:complexType name="recipeStructureDefType">
<xs:sequence>
<xs:element type="xs:string" name="description"/>
<xs:element type="parametersTabType" name="parametersTab"/>
</xs:sequence>
<xs:attribute type="mnemonicType" name="mnemonic" use="required"/>
<xs:attribute type="xs:string" name="title"/>
</xs:complexType>
您可能想要指定一个以上字符的最小长度,minLength 构面是您可以用来限制简单值的众多构面之一。查看 XML 架构规范以获取完整列表:https://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes