Tworzenie własnego typu prostego. Schematy.

0
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:attribute name="tax-id" type="xsd:tax-idTyp"/>
 <xsd:simpleType name="tax-idTyp">
 <xsd:restriction base="xsd:string">
 <xsd:pattern value="([0-9]{3}-[0-9]{2}-[o-9]{2}-[0-9]{3})"/>
 </xsd:restriction>
 </xsd:simpleType>
</xsd:schema> 

Validator zwraca trzy błędy:
src-resolve.4.2: Error resolving component 'xsd:tax-idTyp'. It was detected that 'xsd:tax-idTyp' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'null'. If this is the incorrect namespace, perhaps the prefix of 'xsd:tax-idTyp' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'null'.

src-resolve: Cannot resolve the name 'xsd:tax-idTyp' to a 'type definition' component.

src-resolve: Cannot resolve the name 'xsd:tax-idTyp' to a 'simpleType definition' component.

"Problem polega nad typem jaki jest "tax-idTyp" - definiowany przez użytkownika, czy wbudowany? Tu tkwi Pański problem" taką wiadomość dostałem od pana dr, tylko, że ja dalej nie wiem jak naprawić ten błąd. Czy mógłby ktoś pomóż?

0

SimpleType nie może mieć atrybutów i pod elementów.
Dlatego robisz taki myk, ja bym tak zrobił.
Taki kod z pod ręki :)
<xs:complexType name="typProducent">
xs:simpleContent
<xs:extension base="xs:string">
<xs:attribute name="idref" type="xs:NCName" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

0

Był tu jeszcze jeden post i zniknął. Nie wiem czym sprawdzasz i jaki xml sprawdzasz, ale niezależnie do tego to nie ma prawa zadziałać. Upraszczając troszkę: załóżmy, że walidacja xml zaczyna się od elementu korzenia dokumentu. Wtedy w schemacie szukana jest definicja tego elementu, a więc <xsd:element . W twoim schemacie tego nie ma, więc walidator nie ma powodu, aby powiązać element korzenia z jakimkolwiek typem zdefiniowanym w schemacie. Druga sprawa to taka, że to co definiujesz w schemacie dotyczy dokumentu w przestrzeni nazw tego schematu, a ta przestrzeń ma już zdefiniowany schemat. Dlatego powinieneś zdefiniować przestrzeń nazw bez prefiksu, atrybut targetNamespace lub wskazać, że tworzysz schemat dla dokumentu bez przestrzeni nazw. Wklej wszystko co masz, czyli cały schemat i xsd i napisz jak tego używasz.

0

<xsd:element name="invoices"/>

To jak do tego dopisać jeszcze ten atrybut typu type, aby wskazywał na complexType?

1

Zacznij tak:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="invoices">
	<xsd:complexType>
		<xsd:sequence>
			<xsd:element name="invoice" type="invoiceTyp" maxOccurs="unbounded" minOccurs="1"></xsd:element>
		</xsd:sequence>
	</xsd:complexType>
</xsd:element>

<xsd:complexType name="invoiceTyp">....

Potem walidator, jak masz fajny, to ci pokaże co masz źle zrobione. Ja używam Eclipse, to widzę, że jeszcze masz co poprawiać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1