Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Schemat XML - atrybut i wartość elementu na raz
torbicki65
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.11.2008

Ostrzeżenie: (0%)
-----


Mam taki problem, mam przykładowy kawałek danych w XML:

  1. <cena waluta="PLN">15</cena>


i chcę dla niego stworzyć schemat XML (na wbudowanych typach).

Kiedy probuję czegoś takiego

  1. <xsd:element name="cena" type="xsd:integer">
  2. <xsd:complexType>
  3. <xsd:attribute name="waluta"/>
  4. </xsd:complexType>
  5. </xsd:element>


to walidator wyrzuca mi błąd, że complexType i type wykluczają się jednocześnie. Jedyne co mi działa, to forma, kiedy usunę type="xsd:integer", ale wtedy nie mogę mieć żadnej wartości (w przykładzie tych "15"). Jedyne co udało mi się wymyśleć, to zastosowanie elementu w środku, w stylu:

  1. <cena waluta="PLN">
  2. <kwota>15</kwota>
  3. </cena>


Ale chciałbym się dowiedzieć jak powinien wyglądać schemat dla tego pierwszego przykładu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dawno się tym nie bawiłem, ale chyba coś takiego powinno się sprawdzić.
  1. <xsd:element name="cena" type="xsd:integer">
  2. <xsd:attribute name="waluta" type="xsd:string" use="required" />
  3. </xsd>
Go to the top of the page
+Quote Post
torbicki65
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.11.2008

Ostrzeżenie: (0%)
-----


Niestety, wtedy wyrzuca błąd:
The content is not valid. Expected is (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*)).

Nie chce mi się wierzyć, że się nie da :/ Ale w żadnych materiałach dydaktycznych, które znalazłem, nie ma tego przykładu. Jak na złość.
Go to the top of the page
+Quote Post
wmatusiak
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 7
Dołączył: 27.03.2011
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Witam
Jako że to pierwszy post to witam wszystkich.
A teraz do rzeczy (IMG:style_emoticons/default/wink.gif)

  1. <xsd:element name="cena">
  2. <xsd:complexType>
  3. <xsd:simpleContent>
  4. <xsd:extendsion base="xsd:integer">
  5. <xsd:attribute name="waluta" type="xsd:string" />
  6. </xsd:extendsion>
  7. </xsd:simpleContent>
  8. </xsd:complexType>
  9. </xsd:element>


PS. Na tym kompie niemam parsera ani żadnego porządnego edytora XML więc może zawierać błędy ale idea powinn być ok (IMG:style_emoticons/default/wink.gif)

Ten post edytował wmatusiak 28.03.2011, 20:13:53
Go to the top of the page
+Quote Post
torbicki65
post
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.11.2008

Ostrzeżenie: (0%)
-----


Niestety ni w ząb nie chce działać, zapytam jutro ćwiczeniowca i napiszę, może ktoś kiedyś też będzie miał ten problem.
Go to the top of the page
+Quote Post
wmatusiak
post
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 7
Dołączył: 27.03.2011
Skąd: Kęty

Ostrzeżenie: (0%)
-----


Literówka była w słowie extension (IMG:style_emoticons/default/wink.gif)
XSD
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3. <xs:element name="root">
  4. <xs:complexType>
  5. <xs:sequence>
  6. <xs:element name="cena" maxOccurs="unbounded" minOccurs="1">
  7. <xs:complexType>
  8. <xs:simpleContent>
  9. <xs:extension base="xs:integer">
  10. <xs:attribute name="waluta" type="xs:string" use="required" />
  11. </xs:extension>
  12. </xs:simpleContent>
  13. </xs:complexType>
  14. </xs:element>
  15. </xs:sequence>
  16. </xs:complexType>
  17. </xs:element>
  18. </xs:schema>

XML
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="tmp.xsd">
  3. <cena waluta="PLN">29</cena>
  4. </root>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.04.2026 - 10:35