如何在复杂类型和混合类型的元素上应用正则表达式
How to apply regex on element which is complexType and mixed
我生成了一个 TEI xsd,我必须对其进行一些更改,我有“w”元素,我必须对其文本内容应用正则表达式,假设我想要文本匹配 [0-9].
这是我的 xsd 元素:
<xs:element name="w">
<xs:annotation>
<xs:documentation>(word) represents a grammatical (not necessarily orthographic) word. [17.1. Linguistic Segment Categories 17.4.2. Lightweight Linguistic Annotation]</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tei:w"/>
<xs:element ref="tei:pc"/>
</xs:choice>
<xs:attributeGroup ref="tei:att.global.attributes"/>
<xs:attributeGroup ref="tei:att.segLike.attributes"/>
<xs:attributeGroup ref="tei:att.typed.attributes"/>
<xs:attributeGroup ref="tei:att.linguistic.attributes"/>
<xs:attributeGroup ref="tei:att.notated.attributes"/>
</xs:complexType>
</xs:element>
在下面的例子中,第一个应该是有效的,而不是第二个。
<w lemma="ttt" type="PRP">5</w>
<w lemma = "pied" type="NOM">pieds</w>
我尝试过但没有奏效的事情:
<xs:assert test="matches($value,'[0-9]')"/>
<xs:assert test="matches(w/text(),'[0-9]')"/>
<xs:assert test="matches($w,'[0-9]')"/>
感谢您的帮助。
做例如<xs:assert test="matches(., '^[0-9]$')"/>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tei:w"/>
<xs:element ref="tei:pc"/>
</xs:choice>
<xs:attributeGroup ref="tei:att.global.attributes"/>
<xs:attributeGroup ref="tei:att.segLike.attributes"/>
<xs:attributeGroup ref="tei:att.typed.attributes"/>
<xs:attributeGroup ref="tei:att.linguistic.attributes"/>
<xs:attributeGroup ref="tei:att.notated.attributes"/>
<xs:assert test="matches(., '^[0-9]$')"/>
</xs:complexType>
应该足以检查元素包含例如只有一个数字。
我生成了一个 TEI xsd,我必须对其进行一些更改,我有“w”元素,我必须对其文本内容应用正则表达式,假设我想要文本匹配 [0-9].
这是我的 xsd 元素:
<xs:element name="w">
<xs:annotation>
<xs:documentation>(word) represents a grammatical (not necessarily orthographic) word. [17.1. Linguistic Segment Categories 17.4.2. Lightweight Linguistic Annotation]</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tei:w"/>
<xs:element ref="tei:pc"/>
</xs:choice>
<xs:attributeGroup ref="tei:att.global.attributes"/>
<xs:attributeGroup ref="tei:att.segLike.attributes"/>
<xs:attributeGroup ref="tei:att.typed.attributes"/>
<xs:attributeGroup ref="tei:att.linguistic.attributes"/>
<xs:attributeGroup ref="tei:att.notated.attributes"/>
</xs:complexType>
</xs:element>
在下面的例子中,第一个应该是有效的,而不是第二个。
<w lemma="ttt" type="PRP">5</w>
<w lemma = "pied" type="NOM">pieds</w>
我尝试过但没有奏效的事情:
<xs:assert test="matches($value,'[0-9]')"/>
<xs:assert test="matches(w/text(),'[0-9]')"/>
<xs:assert test="matches($w,'[0-9]')"/>
感谢您的帮助。
做例如<xs:assert test="matches(., '^[0-9]$')"/>
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tei:w"/>
<xs:element ref="tei:pc"/>
</xs:choice>
<xs:attributeGroup ref="tei:att.global.attributes"/>
<xs:attributeGroup ref="tei:att.segLike.attributes"/>
<xs:attributeGroup ref="tei:att.typed.attributes"/>
<xs:attributeGroup ref="tei:att.linguistic.attributes"/>
<xs:attributeGroup ref="tei:att.notated.attributes"/>
<xs:assert test="matches(., '^[0-9]$')"/>
</xs:complexType>
应该足以检查元素包含例如只有一个数字。