【问题标题】:Schematron XPath : Can I split a string attribute acting like a list in a Schematron?Schematron XPath:我可以在 Schematron 中拆分类似于列表的字符串属性吗?
【发布时间】:2016-06-17 12:57:52
【问题描述】:

我正在尝试验证写入单个属性的列表的所有 idRef 是否已声明为 id。

这是一个例子:

<Regions>
    <Region id="REGION1>
    <Region id="REGION3>
    <Region id="REGION3>
</Regions>
<Layouts>
    <Layout regions="REGION1, REGION2, REGION3" />
</Layouts>

如果 idRef 属性定义了一个 idRef ,我知道该怎么做:

<rule context="Display[@touchAspectRatio]">
    <assert test="@touchAspectRatio = //TouchAspectRatio/@id"></assert>

<TouchAspectRatio id="T1" />
<Displays>
    <Display touchAspectRatio="T1" />
    <Display touchAspectRatio="T1" />
</Displays>

但我找不到如何在用“,”分隔的字符串中使用这样定义的列表进行验证。 我无法修改 XML 的结构,我知道使用元素列表会更容易/可行,但我有一些限制阻止我改变结构。

你们有解决办法吗?

【问题讨论】:

  • 请发布语法有效的代码示例。

标签: xml xpath schematron


【解决方案1】:

假设您将 Schematron 与 XSLT/XPath 2.0 一起使用,您可以使用

<assert test="every $id in tokenize(@regions, ',\s*') satisfies $id = //Regions/Region/@id"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多