Я новичок в XML и XML Schema.Я настроил файл XML и схему XML.Я не на 100% знаком с пространствами имен.
Я получаю следующие ошибки в схеме XML:
- src-resol: Не удается разрешить имя 'childrenType' в a (n)'определение типа' component.xsd (src-resol)
- src-resol.4.1: Ошибка при разрешении компонента 'childrenType'.Было обнаружено, что у 'childrenType' нет пространства имен, но компоненты без целевого пространства имен не доступны из файла схемы документа 'file: /// C: /XML/file_root.xsd'.Если 'childrenType' должен иметь пространство имен, возможно, необходимо указать префикс.Если предполагается, что у «childrenType» нет пространства имен, то «file» без атрибута «namespace» следует добавить в «file: /// C: /XML/file_root.xsd'.xsd (src-resol.4.1»).)
В XML-файле появляются следующие ошибки:
- cvc-elt.1.a: не удается найти объявление элемента 'BinaryExpressionTreeBoolean'.xml (cvc-elt.1.a)
Я не знаю, почему не определено значение childrenType, поскольку оно определено ниже в документе XSD.Я подозреваю, что это проблема пространства имен.
То, что я пытаюсь представить в схеме XSD:
- Представление дерева (BinaryExpressionTreeBoolean)
- Дерево имеетодин и только один корневой узел
- Любой узел в дереве может быть только двух типов (NodeOperandType или NodeStringExpressionType)
- Тип узла, NodeOperandType, является единственным узлом, который может иметь детей, и онтребуется иметь хотя бы одного ребенка.NodeStringExpressionType не может иметь дочерних элементов.
- Тип узла NodeOperandType имеет следующие элементы: операнд (обязательный), тест (обязательный) и любые дочерние элементы (как описано ранее).
- Тип узла NodeStringExpressionTypeимеет следующие обязательные элементы: строковое выражение, тест, тестовую строку и то, является ли тест чувствительным к регистру.
XSD-файл:
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" elementFormDefault="qualified">
<xs:complexType name="NodeOperandType">
<xs:sequence>
<!-- <xs:element name="operand" type="xs:string" /> -->
<xs:element name="test" type="xs:string" />
<xs:element name="children" type="childrenType" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NodeStringExpressionType">
<xs:sequence>
<!-- <xs:element name="string_expression" type="xs:string" /> -->
<xs:element name="test" type="xs:string" />
<xs:element name="test_string" type="xs:string" />
<xs:element name="case_sensitive" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="NodeType">
<xs:choice>
<xs:element name="NodeOperand" type="NodeOperandType" minOccurs="1" maxOccurs="1" />
<xs:element name="NodeStringExpression" type="NodeStringExpressionType" minOccurs="1" maxOccurs="unbounded" />
</xs:choice>
</xs:complexType>
<xs:complexType name="childrenType">
<xs:sequence>
<xs:element name="Node" type="NodeType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="BinaryExpressionTreeBoolean">
<xs:sequence>
<xs:element name="Node" type="NodeType" minOccurs="1"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
XML-файл:
<?xml version="1.0" ?>
<BinaryExpressionTreeBoolean xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.w3schools.com file:///C:/XML/file_root.xsd">
<Node>
<NodeOperandType>
<test>"or"</test>
<children>
<Node>
<NodeStringExpressionType>
<test>"include"</test>
<test_string>"simple"</test_string>
<case_sensitive>"true"</case_sensitive>
</NodeStringExpressionType>
</Node>
<Node>
<NodeStringExpressionType>
<test>"include"</test>
<test_string>"simple"</test_string>
<case_sensitive>"true"</case_sensitive>
</NodeStringExpressionType>
</Node>
</children>
</NodeOperandType>
</Node>
</BinaryExpressionTreeBoolean>
Обновление после принятого ответа:
Ниже приведен окончательный XML-файл для использования в будущем для всех, кто посетит этот вопрос.
<?xml version="1.0" ?>
<BinaryExpressionTreeBoolean xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com file:///C:/XML/file_root.xsd">
<Node>
<NodeOperand>
<test>"or"</test>
<children>
<Node>
<NodeStringExpression>
<test>"include"</test>
<test_string>"simple"</test_string>
<case_sensitive>true</case_sensitive>
</NodeStringExpression>
</Node>
<Node>
<NodeStringExpression>
<test>"include"</test>
<test_string>"simple"</test_string>
<case_sensitive>true</case_sensitive>
</NodeStringExpression>
</Node>
</children>
</NodeOperand>
</Node>
</BinaryExpressionTreeBoolean>