Как применять абстрактные правила к атрибутам на Скиматроне?
От: watchyourinfo Аргентина  
Дата: 17.08.16 22:55
Оценка:
Диджей Скиматрон на этой сцене

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

  <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, в который этот скиматрон компилируется).
schematron xml xslt
Re: Как применять абстрактные правила к атрибутам на Скиматроне?
От: watchyourinfo Аргентина  
Дата: 19.08.16 17:45
Оценка:
ок, а как можно вставить в схематрон-схему определение своих собственных функций (на xslt)?

Желательно без инклюдов, чтобы прямо inline.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.