Adam Walczak

Adam Walczak analityk, projektant
oprogramowania,
konsultant

Temat: [XML Schema] Definicje rekurencyjne

Witam.

Zasłużmy że mój program akceptuje np takiego xml'a:

<Block>
<Block>
<PrintMessage/>
<Block>
<PrintMessage />
<PrintMessage />
</Blok>
</Block>
<Block>
<PrintMessage />
<PrintMessage />
</Block>
</Block>

I teraz próbuje dla tego typu xml'ków ułożyć XML Schema:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

<complexType name="Statement">
<choice>

<element name="Block">
<complexType mixed="true">
<sequence>
<element type="Statement" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>

<element name="PrintMessage" />

</choice>
</complexType>

</schema>

Ale tu pojawia mi się błąd w schemie typu:

src-resolve.4.2: Error resolving component 'Statement'. It was detected that 'Statement' is in
namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are
not referenceable from schema document 'file:///home/awalczak/workspace/xmlstacks/src/
info/adamwalczak/xmlstacks/res/lang.xsd'. If this is the incorrect namespace, perhaps the
prefix of 'Statement' needs to be changed. If this is the correct namespace, then an
appropriate 'import' tag should be added to 'file:///home/awalczak/workspace/xmlstacks/src/
info/adamwalczak/xmlstacks/res/lang.xsd'.

I tu że tak powiem treść tego błędu kompletnie do mnie nie przemawia :(
Jakieś sugestie co mogę robić nie tak ?

PS. XML z pojedynczym tagiem <PrintMessage /> jest także akceptowalny
przez mój program.
Robert Suski

Robert Suski Sr Solutions
Developer

Temat: [XML Schema] Definicje rekurencyjne

Przede wszystkim nie możesz uzyć nieprefixowanej przestrzeni nazw http://www.w3.org/2001/XMLSchema w dokumencie w ktorym definiujesz swoje typy. Dodaj prefix

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:complexType name="Statement">
<xs:choice>

<xs:element name="Block">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element type="Statement" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="PrintMessage" />

</xs:choice>
</xs:complexType>

</xs:schema>

Moża też się zastanowić czy nie warto zdefiniować targetNamespace na tej schemie. Ale wydaje się ze nie bedzie to konieczne.Robert Suski edytował(a) ten post dnia 16.05.09 o godzinie 19:38

konto usunięte

Temat: [XML Schema] Definicje rekurencyjne

Sławomir Z. edytował(a) ten post dnia 12.09.12 o godzinie 21:44
Adam Walczak

Adam Walczak analityk, projektant
oprogramowania,
konsultant

Temat: [XML Schema] Definicje rekurencyjne

Bardzo dziękuje za pomoc. Wskazówka z przestrzeniami nazw załatwiła sprawę.
A potrzebne mi to było do opisu mojego XML'owego języka skryptowego do przetwarzania plików XML.
Więcej informacji o składni oraz interpreterze jest dostępne na:
http://www.adamwalczak.info/homepage/xmlstacks/
Sam język, który stworzyłem szału nie robi; on po prostu jest (na zaliczanie :) ).
Choć sposób w jaki zaprojektowałem interpreter uważam za całkiem udany.

Następna dyskusja:

Zaproszenie na dwudniowe Wa...




Wyślij zaproszenie do