Я пытаюсь использовать DOMXPath, чтобы получить список дочерних элементов в файле XSD, которые являются прямыми потомками элемента с именем «Item». Однако, используя 2 опции xpath, перечисленные ниже, в результаты всегда включаются внуки, а также дочерние узлы.
ура
$dom = new DOMDocument();
$dom->load('xsdfile.xsd');
$xpath = new DOMXPath($dom);
//$xpath_str = '//xs:element[@name="Item"]/descendant::xs:element';
$xpath_str = '//xs:element[@name="Item"]//xs:element';
$results = $xpath->evaluate($xpath_str);
Под element
есть complexType
, затем sequence
, choice
или же all
, а затем фактические дочерние элементы, поэтому XPath должен быть:
//xs:element[@name="Item"]/xs:complexType/*/xs:element
(*
= любой элемент) или
//xs:element[@name="Item"]/*/*/xs:element
Других решений пока нет …