Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml][schema] problem ze sprawdzaniem zawartości elementu
Forum PHP.pl > Forum > XML, AJAX > XML
szpilka
Witam (po raz pierwszy w tym miejscu 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?
splatch
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:
  1. <element>
  2.    <typ nazwa="string"><value>xxx</value></typ>
  3.    <typ nazwa="integer"><value>123</value></typ>
  4. </element>


Może tak się da.. smile.gif
szpilka
Właśnie kłopot w tym, że optymalnie byłoby nie dotykać xmla 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 mellow.gif

Tak czy inaczej dzięki, idę negocjować zmiany winksmiley.jpg
dr_bonzo
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.