我应该在 xs:field 到 select 元素内容中使用什么 XPath 表达式?
What XPath expression should I use in xs:field to select element content?
我知道通常使用 /the/path/to/a/node/text()
来提取字符串值。这还不足以解决我的问题。
我正在使用 XML 架构版本 1.0 来定义一些文档类型。我正在尝试为文档类型创建一个非常简单的 keywords
部分。所以我首先创建一个非常简单的复杂类型。
<xs:complexType name="KeywordsList">
<xs:sequence>
<xs:element name="tag" type="xs:token" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
所以现在我有一个类型可以包含任意数量的包含 xs:token
值的元素的列表。 我的问题始于如何禁止重复的问题。
我经常使用 xs:key
和 xs:unique
来完成这个非常琐碎的任务,但我只对属性值或更深层嵌套的元素做过。例如,如果关键字值存储在名为 value
的属性中,我知道我可以这样做。
...
<xs:element name="keywords" type="KeywordsList">
<xs:unique name="KeywordsListUnique">
<xs:selector xpath="child::tag"/>
<xs:field xpath="@value"/>
</xs:unique>
</xs:element>
...
真正让我困惑的是 <xs:selector xpath="child::tag"/>
足以让 XML 解析器定位值,但我需要至少包含一个 xs:field
标签.
起初我认为我应该指定 <xs:field xpath="text()"/>
来引用节点的文本内容,但是当我这样做时,我从 OxygenXML.
收到错误消息
c-general-xpath: The expression 'text()' is not valid with respect to the XPath subset supported by XML Schema.
我收到了 child::text()
、./text()
和其他一些类似消息的类似消息。我已经通过使用一个点来引用当前节点来摆脱错误消息,但我不知道 .
是否是要使用的正确表达式。
那么我应该在xs:field
标签里放什么呢?
答案确实是使用 <xs:field xpath="."/>
,如 this post。
我知道通常使用 /the/path/to/a/node/text()
来提取字符串值。这还不足以解决我的问题。
我正在使用 XML 架构版本 1.0 来定义一些文档类型。我正在尝试为文档类型创建一个非常简单的 keywords
部分。所以我首先创建一个非常简单的复杂类型。
<xs:complexType name="KeywordsList">
<xs:sequence>
<xs:element name="tag" type="xs:token" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
所以现在我有一个类型可以包含任意数量的包含 xs:token
值的元素的列表。 我的问题始于如何禁止重复的问题。
我经常使用 xs:key
和 xs:unique
来完成这个非常琐碎的任务,但我只对属性值或更深层嵌套的元素做过。例如,如果关键字值存储在名为 value
的属性中,我知道我可以这样做。
...
<xs:element name="keywords" type="KeywordsList">
<xs:unique name="KeywordsListUnique">
<xs:selector xpath="child::tag"/>
<xs:field xpath="@value"/>
</xs:unique>
</xs:element>
...
真正让我困惑的是 <xs:selector xpath="child::tag"/>
足以让 XML 解析器定位值,但我需要至少包含一个 xs:field
标签.
起初我认为我应该指定 <xs:field xpath="text()"/>
来引用节点的文本内容,但是当我这样做时,我从 OxygenXML.
c-general-xpath: The expression 'text()' is not valid with respect to the XPath subset supported by XML Schema.
我收到了 child::text()
、./text()
和其他一些类似消息的类似消息。我已经通过使用一个点来引用当前节点来摆脱错误消息,但我不知道 .
是否是要使用的正确表达式。
那么我应该在xs:field
标签里放什么呢?
答案确实是使用 <xs:field xpath="."/>
,如 this post。