0

这是我想在我的模式中定义的 XML 的(部分)。我已经为元素的name属性添加了唯一约束。<add />

<parameters>
  <add name="one" value="1" />
  <add name="two" value="2" />
</parameters>

但是不知道怎么预防<add name="" value="" />。我尝试了以下架构,但没有得到尊重:

<xs:attribute name="name" use="required" type="config:NonEmptyString" />

<xs:simpleType name="NonEmptyString">
  <xs:restriction base="xs:string">
    <xs:minLength value="1" />
  </xs:restriction>
</xs:simpleType>

config是架构的目标命名空间。

编辑:当我在 XML 编辑器中编写 XML 时,我正在使用 Visual Studio 来验证 XML。

4

2 回答 2

2

我做了一个快速测试;从 XML 中创建了一个 XSD 并添加了您的约束:

<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="parameters">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" name="add">
                    <xsd:complexType>
                        <xsd:attribute name="name" type="NonEmptyString" use="required"/>
                        <xsd:attribute name="value" type="xsd:unsignedByte" use="required"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:simpleType name="NonEmptyString">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

我已经验证了这个 XML:

<parameters>
  <add name="" value="1" />
  <add name="two" value="2" />
</parameters>

我有这个错误:

Error occurred while loading [], line 2 position 8
The 'name' attribute is invalid - The value '' is invalid according to its datatype 'NonEmptyString' - The actual length is less than the MinLength value.

我会说问题在于您的 XSD 处理器,而不是 XSD 本身。也许您可以使用您正在使用的处理器更新帖子?

于 2012-05-28T22:29:10.257 回答
1

Visual Studio 2010 正确地进行验证 - 它产生警告:

Warning 4 The 'name' attribute is invalid - The value '' is invalid according to its datatype 'config:NonEmptyString' - The actual length is less than the MinLength value. XMLFile1.xml    3   14  Miscellaneous Files

但由于某种原因(错误?),它没有在 XML 编辑器中强调错误位置。

于 2012-05-29T20:38:27.523 回答