LINUX.ORG.RU

Как применять абстрактные правила к атрибутам на Скиматроне?

 schematron, ,


0

1

Если я хочу иметь какое-то общее правило для узлов — например, текст узла должен быть числом с плавающей точкой, то это легко сделать с помощью абстрактных правил:

  <sch:rule abstract="true" id="float-number">
    <sch:assert test="matches(., '^(\+|-)?([0-9]+(\.[0-9]*)?|\.[0-9]+)([Ee](\+|-)?[0-9]+)?|(\+|-)?INF|NaN$')">Element <sch:value-of select="name(.)"/> must be decimal numeral with or without a decimal point, numeral in scientific (exponential) notation, or one of INF, +INF,'-INF or NaN literals</sch:assert>
  </sch:rule>

И далее это правило можно применять к любому узлу:

    <sch:rule context="/*/opioid/content">
      <sch:extends rule="float-number"/>
      <sch:extends rule="be-high"/>
    </sch:rule>

Как можно красиво писать такие же правила для атрибутов??

Если писать напрямую:

    <sch:rule context="/*/opioid/@content">
      <sch:extends rule="float-number"/>
    </sch:rule>

то это не работает (причина понятна, если посмотреть XSL, в который этот скиматрон компилируется).

★★★★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.