Вы можете проверить выражение XPath по документу XML, чтобы проверить его, но есть ли простой способ проверить то же выражение XPath по схеме для этого документа?
Скажем, у меня есть схема XSD, подобная этой:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... etc>
<xsd:element name="RootData">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstChild">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstGrandChild">
... etc etc
Существует ли простой или встроенный способ убедиться, что XPath:
/RootData/FirstChild/FirstGrandChild
будет действительным для любых документов XML, которые могут быть основаны на этой схеме? ( Редактировать : Полагаю, я имею в виду потенциально допустимый ; XML-документ фактический может не содержать этих элементов, но XPath все еще может считаться потенциально допустимым для схемы Тогда как, скажем, /RootData/ClearlyInvalidChild/ThisElementDoesntExistEither
явно недействителен.)
Конечно, я мог ожидать, что это сработает только с каноническими выражениями XPath, а не с произвольной сложностью, но это нормально.
Я специально думаю о .NET, но мне любопытно, если другие реализации делают это возможным. Не так важно, чтобы я хотел свернуть свой собственный, например, я действительно не хочу писать свой собственный код для преобразования этого выражения XPath в другое, например:
/xsd:schema/xsd:element[@name='RootData']/xsd:complexType/xsd:sequence/xsd:element[@name='FirstChild']/...etc...
... хотя я знаю, что мог бы сделать это, если бы мне действительно пришлось.
Ура!