在xsd模式匹配中使用xpath?

时间:2015-06-23 08:32:44

标签: xml xpath xsd schema xsd-validation

是否可以将属性值用作模式匹配的一部分?

例如xsd:

ValueAnimator translate = ValueAnimator.ofInt(viewX, endX, viewY, endY);
translate.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        int valX = (Integer) valueAnimator.getAnimatedValue("x");
        int valY = (Integer) valueAnimator.getAnimatedValue("y");

        updateViewLayout(mWindowManager, view2animate, valX, valY, null, null);
    }
});
translate.setDuration(1000);
translate.start();

所以基本上MyTestElement中的模式匹配应该包含外部元素name属性的值,这可能吗?

1 个答案:

答案 0 :(得分:2)

您无法在xs:pattern中使用XPath。 xs:pattern的内容应该是specs 中所说的模式(正则表达式)。

但是,如果您使用的是XSD 1.1,则可以在xs:assert中使用XPath,如果使用XSD,则可以在xs:keyxs:keyRefxs:unique中使用某些XPath子集1.0。

例如,如果您使用的是XSD 1.1,则可以使用这样的断言来检查每个<MyTestElement>是否与模式匹配,或者具有与name属性相同的值。

<xs:assert test="every $MyTestElement in MyTestElement satisfies (string($MyTestElement) = string(@name) or matches(string($MyTestElement), 'pattern'))"/>