如何强制 complexType 元素在字符串中至少包含 3 个字符?

How to force a comlpexType element to have at least 3 characters in a string?

在 XML 1.1 中工作。我试图限制 complexType 元素的 XML-schema,该元素将包含一个至少具有 3 个字符的字符串。我该怎么做?

我的目标是拥有一个复杂类型的元素,因此它包含一些其他元素以及要使用的属性。现在的目标是这个元素本身的内容不能为空。理想情况下,我想要这样的东西:

<text type='question'><condition extended='playerMoved' keyword='game'/>Did you already <keyword>move</keyword>?</text>

我想要它,这样内部没有任何文本的元素是无效的,所以应该禁止这样的事情:

<text type='question'><condition extended='playerMoved' keyword='game'/></text>

我现在的问题是,我尝试过的所有解决方案都只适用于简单类型,但我无法将它们用于复杂类型。我已经尝试过以下想法,但它们都只会抛出错误消息并且不会编译:

1.) 元素本身的限制:

<xs:element name="text">
    <xs:complexType mixed="true">
        <xs:simpleContent>
            <xs:restriction base='xs:string'>
                <xs:minLength value="3"/>
            </xs:restriction>
        </xs:simpleContent>
        <xs:sequence>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="condition" type="condition" minOccurs="0" maxOccurs="unbounded"/>
                ...
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="type" use="required">
            <xs:simpleType>
                ...
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>

2.) 受简单内容的复杂类型限制:

 <xs:element name="text">
    <xs:complexType mixed="true">
        <xs:simpleContent>
            <xs:restriction base='textString'>
                <xs:minLength value="3"/>
            </xs:restriction>
        </xs:simpleContent>
        <xs:sequence>
            ...
        </xs:sequence>
        <xs:attribute name="type" use="required">
            ...
        </xs:attribute>
    </xs:complexType>
</xs:element>

...

<xs:complexType name="textString">
    <xs:simpleContent>
        <xs:extension base="xs:string"/>
    </xs:simpleContent>
</xs:complexType>

None 这些工作,由于我无法通过断言找到一种方法,所以我被严重困住了,不知道如何继续。我怎样才能让我的架构强制包含至少 3 个字符的字符串?

<xs:assert id="test-length" test="string-length() ge 3"></xs:assert> 之类的断言放入 xs:complexType 元素中。