Использование Schematron для определения пробела в качестве первого символа в элементе

Можно ли написать правило/утверждение схемы, которое идентифицирует пробелы в начале элемента? Мне нужен способ пометить элементы, начинающиеся с пробела, для возможного удаления пробела, но я не хочу принудительно удалять такие пробелы с помощью XSLT и т. д. Вот пример:

<section>
<paragraph> Here's some text.</paragraph>
</section>

person wolfmason    schedule 22.06.2015    source источник
comment
Будут ли они всегда иметь следующую структуру: <...> text<...>? Может ли решение быть в bash?   -  person ShellFish    schedule 22.06.2015


Ответы (1)


Да, Schematron использует XPath для утверждений, поэтому проверить строковое значение элемента на начальный пробел несложно:

  <pattern>
    <title>Paragraphs starting with a space</title>
    <rule context="paragraph">
      <report test="starts-with(., ' ')">
        This paragraph starts with a space: <value-of select="paragraph"/>
      </report>
    </rule>
  </pattern>
person kjhughes    schedule 22.06.2015
comment
Спасибо! Это утверждает пробел в начале, а не сообщает об этом, поэтому я изменил «утверждать» на «отчет», и это работает хорошо. (Возможно, я не ясно выразился, я хочу избавиться от пробелов, когда они не принадлежат.) - person wolfmason; 24.06.2015
comment
Пожалуйста. Если это помогло (отчет по модулю против утверждения), не забудьте принять< /б>. Спасибо. - person kjhughes; 24.06.2015
comment
У меня есть краткое продолжение, хотя (извините!). После небольшого дополнительного тестирования я вижу, что моя проверка сталкивается с проблемами, когда в контексте одного «раздела» присутствует более одного элемента ‹paragraph›. Я прочитал немного больше о запуске с и вижу, что он извлекает последовательность всех совпадающих узлов, что не разрешено в качестве первого аргумента. Есть ли способ использовать этот шаблон для получения одного совпадения за раз? Или я подхожу к этому совершенно неправильно сейчас... - person wolfmason; 24.06.2015
comment
Похоже, вы действительно хотели бы, чтобы контекст был paragraph, а не section. Если это так, также измените assert/@test на starts-with(., ' '). - person kjhughes; 24.06.2015
comment
Идеально! Спасибо еще раз! - person wolfmason; 24.06.2015
comment
Пожалуйста. Я пошел дальше и скорректировал шаблон, чтобы использовать контекст paragraph и проверку строкового значения paragraph в соответствии с вашими комментариями. Тоже переключился с утверждения на отчет. - person kjhughes; 24.06.2015