2015-06-22 6 views
3

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

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

будет ли они всегда быть структурированы следующим образом: '<...> текста <...>'? Может ли решение быть в [tag: bash]? – ShellFish

ответ

3

Да, 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> 
+0

Спасибо! Это означает, что в начале, а не сообщать об этом, я изменил на , и он работает хорошо. (Возможно, я не был ясен, я хочу избавиться от пробелов, когда они не принадлежат.) – wolfmason

+1

Добро пожаловать. Если это помогло (modulo report vs assert), запомните [** accept **] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Спасибо. – kjhughes

+0

У меня есть краткий обзор, хотя (извините!). После немного большего количества тестов я вижу, что моя проверка выполняется в проблемах, когда есть несколько элементов в контексте одного

. Я читал немного больше о запуске, и я вижу, что он извлекает последовательность всех совпадающих узлов, что не разрешено в качестве первого аргумента. Есть ли способ использовать этот шаблон для получения одного совпадения за раз? Или я сейчас подхожу к этому совершенно неправильно ... – wolfmason