mam taką schemę:
http://wklejto.pl/64233
posiada ona jako walidator wyrażenie regularne
<xs:simpleType name="napisUnicode_t"> <xs:restriction base="xs:string"> <xs:pattern value="^[\p{Lu}\p{M}*][-'`´\s]?([\p{Lu}\p{Ll}\p{M}*][-'`´\s]?)+$" /> <!-- Napis zaczynajacy sie od wielkiej litery, nastepnie dowolna liczba malych liter. Pomiędzy literami mogą wystepowac znaki '-' (myslnik), ''' (apostrof) lub '`' oraz spacja, ale musza one wystepowac pojedynczo (tzn. dwa znaki z tej grupy nie moga wystepowac obok siebie). Litera nastepujaca bezposrednio po znaku z tej grupy moze byc wielka lub mala. Jako litery traktowane sa wszystkie znaki oznaczajace litery w dowolnym jezyku. Na przyklad znak 'ŕ' zostanie rozpoznany przez powyzsze wyrazenie jako litera, niezaleznie, czy jest zakodowany jako U+0061 U+0300 czy jako U+00E0 --> </xs:restriction> </xs:simpleType>
No i poprawnie walidowanym tekstem powinno być np.
Ul Witosa
Niestety taki kod php:
Nie przyjmuje mi tego tekstu jako prawidłowego
$dom = DOMDocument::load('WyslijWniosek.xml'); if (!$dom->schemaValidate('WyslijWniosek.xsd')) else
Cytat
Warning: DOMDocument::schemaValidate() [domdocument.schemavalidate]: Element '{http://kierowca/parametry}ulOrg': [facet 'pattern'] The value 'Ul Witosa' is not accepted by the pattern '^[\p{Lu}\p{M}*][-'`´\s]?([\p{Lu}\p{Ll}\p{M}*][-'`´\s]?)+$'. in /var/www/test/schema/test.php on line 3
Przepuściłem mój xml przez inny zewnetrzny walidator schemy i przeszlo.
Pomyslalem wiec, ze to php inaczej przetwarza wyrażenie regularne. Odpaliłem więc kod:
$reg = "/^[\p{Lu}\p{M}*][-'`´\s]?([\p{Lu}\p{Ll}\p{M}*][-'`´\s]?)+$/"; $t = 'Ul Witosa';
Okazało się jednak że php waliduje dobrze ten tekst. Problem jest więc gdzieś w mechanizmach walidacji DOM.
Orientuje się może ktoś co może być tam nie tak?