【问题标题】:Casting string to path expression - Schematron将字符串转换为路径表达式 - Schematron
【发布时间】:2013-02-08 12:20:07
【问题描述】:

伙计们

我正在使用 schematron,我需要执行以下操作:

有时在我想要验证的 xml 文档中,有这样的元素:

<Var.X name="B">

对于这些元素(其中 name() 中间有一个点),我需要在 xml 文件中查看是否有一个名为 Var 的目录,其子元素具有属性 name = X (在这种情况下),像这样:

<Var>
   <Obj name="X">
</Var>

我想将这些对象的 name() 转换为表示路径的字符串,所以对于这种情况尤其如此:

Var.X 将是 /*/Var/child::*[@name="X"]

有了这个字符串,然后我想检查实际上是否有一个元素属于该字符串所代表的路径,但我无法将字符串转换为路径类型,我什至不知道这是否可能。 ..

有没有更简单的方法?

【问题讨论】:

    标签: string casting path schematron


    【解决方案1】:

    您也可以使用不带撒克逊扩展名的名称功能!

    <rule context="*[matches(name(),'\w\.\w')]">
        <let name="beforePoint" value="substring-before(name(),'.')"/>
        <let name="afterPoint" value="substring-after(name(),'.')"/>
        <assert test="/*/*[name() = $beforePoint]/*[@name=$afterPoint]">error message</assert>
    </rule>
    

    【讨论】:

      【解决方案2】:

      我已经意识到我想要实现的目标是使用 saxon:evaluate 函数完成的......而且我已经实现了我想要的目标

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-12
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多