Определение типа схемы XML для значений XPath? - PullRequest
5 голосов
/ 19 ноября 2010

У меня есть файл XML, в котором у меня есть атрибут, значением которого будет XPath для поиска содержимого в другом наборе файлов XML.

Пример:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <IterestingNode Value="/html/head/title"/>
</Root>

Этот файл можетбыть проверенным против XSD.В настоящее время я просто проверяю, что значение атрибута является строкой, но я хотел бы проверить, что это синтаксически допустимое значение XPath.

Есть ли определение схемы XML для значений XPath?

Ответы [ 4 ]

3 голосов
/ 19 ноября 2010

Не существует типа данных XSD для выражения XPATH.

Лучшее, что вы могли бы сделать, это использовать xsd:restriction с xsd:pattern, который использует шаблон регулярного выражения для проверки того, что строковое значение является выражением XPATH.

Примерно так:

<xsd:simpleType name="XPathValueType">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="**PUT IN SOME REGEX PATTERN TO VERIFY THE STRING IS AN XPATH EXPRESSION**"/>
  </xsd:restriction>
</xsd:simpleType>

Мне не известен шаблон регулярного выражения, который будет проверять, что данная строка является выражением XPATH для ссылки.

0 голосов
/ 13 марта 2014

В конечном счете, ответ, предоставленный redben, является правильным (на самом деле я видел, как он утверждал, и я считаю, что xslt не может быть выражен в xsd), но я хотел бы обратить внимание на xslt xsd , который имеет следующее определение xsd для выражения xpath:

<xs:simpleType name="expression">
    <xs:annotation>
        <xs:documentation>
            An XPath 2.0 expression.
        </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:token">
        <xs:pattern value=".+"/>
    </xs:restriction>
</xs:simpleType>

Хотя я понимаю, что этот вопрос не был активным в течение длительного времени, я подумал, что это может быть полезным для всехкто должен случиться на эту тему.

0 голосов
/ 26 декабря 2011

Вы можете использовать anyURI с некоторым шаблоном, и XPointer

XPointer пример:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <IterestingNode Value="doc.xml#xpointer(/html/head/title)"/>
</Root>
0 голосов
/ 19 ноября 2010

Я сомневаюсь, что xpath - это данные, а не XML. Спецификация здесь: ht tp: //www.w3.org/TR/xpath/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...