![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 7.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam (po raz pierwszy w tym miejscu (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif) )
Mam problem z zadeklarowaniem w schemie takiej struktury: <element> <typ nazwa="aaa">treść1</typ> <typ nazwa="bbb">treść2</typ> <typ nazwa="ccc">treść3</typ> <typ nazwa="ddd">treść4</typ> <typ nazwa="eee">treść5</typ> </element> Dokładniej chodzi o to, że potrzebuję sprawdzać zawartość elementu <typ/> w zależności od tego, jaką ma wartość jego atrybut nazwa i tu zaczynają się schody, bo nie jest problemem wypisanie wartości atrybutu, ale jak wymusić sprawdzanie, czy np. treść1 (zależna od "aaa") jest typu string, a treść2 (zależna od "bbb") typu integer?? Ktoś się zetknął z czymś takim? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że takie coś jest niemożliwe. Elementy są tej samej nazwy, więc z punktu widzenia XML Schemy, biorąc nawet pod wzgląd węzeł kontekstu, jest to ten sam typ. XSD służy do weryfikacji struktury dokumentu. To, co chcesz uzyskać ma charakter weryfikacji spójności danych zależnych od siebie.
Moja propozycja: 1. Stworzenie typu abstrakcyjnego 2. Stworzenie na bazie tego typu kolejnych elementów rozszerzających bazowy 3. Dodanie do każdego z rozszerzeń (element name=value type=...) oraz atrybutu z ograniczeniem (restriction base=string + enumeration value=...) Uzyskana struktura powinna wyglądać mniej więcej tak:
Może tak się da.. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 7.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie kłopot w tym, że optymalnie byłoby nie dotykać xmla (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) . Myślałam już nad zmianą jego struktury tak, żeby atrybuty stały się elementami, w takim przypadku opisanie ich nie stanowi żadnego problemu, tyle że to oznacza przebudowę paru innych rzeczy (IMG:http://forum.php.pl/style_emoticons/default/mellow.gif)
Tak czy inaczej dzięki, idę negocjować zmiany (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak ze schema, ale w DTD tez nie sprawdzisz wartosci miedzy tagami.
Ostatnio zrobilem dwustopniowa validacje - DTD a potem sprawdzanie wartosci przy uzyciu DOMa |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:27 |