Hejka,
mam taką schemę:
http://wklejto.pl/64233

posiada ona jako walidator wyrażenie regularne
  1. <xs:simpleType name="napisUnicode_t">
  2. <xs:restriction base="xs:string">
  3. <xs:pattern value="^[\p{Lu}\p{M}*][-'`´\s]?([\p{Lu}\p{Ll}\p{M}*][-'`´\s]?)+$" />
  4. <!-- Napis zaczynajacy sie od wielkiej litery, nastepnie dowolna liczba malych liter.
  5. Pomiędzy literami mogą wystepowac znaki '-' (myslnik), ''' (apostrof) lub '`' oraz spacja, ale
  6. musza one wystepowac pojedynczo (tzn. dwa znaki z tej grupy nie moga wystepowac obok siebie).
  7. Litera nastepujaca bezposrednio po znaku z tej grupy moze byc wielka lub mala.
  8. Jako litery traktowane sa wszystkie znaki oznaczajace litery w dowolnym jezyku. Na przyklad
  9. znak 'ŕ' zostanie rozpoznany przez powyzsze wyrazenie jako litera, niezaleznie, czy jest
  10. zakodowany jako U+0061 U+0300 czy jako U+00E0 -->
  11. </xs:restriction>
  12. </xs:simpleType>

No i poprawnie walidowanym tekstem powinno być np.
Ul Witosa

Niestety taki kod php:
  1. $dom = DOMDocument::load('WyslijWniosek.xml');
  2. if (!$dom->schemaValidate('WyslijWniosek.xsd'))
  3. echo 'not';
  4. else
  5. echo 'yes';
Nie przyjmuje mi tego tekstu jako prawidłowego
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:
  1. $reg = "/^[\p{Lu}\p{M}*][-'`´\s]?([\p{Lu}\p{Ll}\p{M}*][-'`´\s]?)+$/";
  2. $t = 'Ul Witosa';
  3. if (preg_match($reg, $t)) echo 'tak'; else echo 'nie';

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?