Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Format deklaracji kodowania

10 views
Skip to first unread message

Borneq

unread,
Nov 5, 2011, 1:51:46 PM11/5/11
to
Jak najszybciej sprawdzić, czy plik jest prawidłowym XML-em z kodowaniem
UTF-8 czy też dowolnym innym plikiem tekstowym. Nie chodzi mi o parser
całego XMLa, tak jak w Delphi jest NativeXML, ale o to jak najszybciej
napisać klasę sprawdzającą.
Spotkałem się z takimi:
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
Czy po "<?" piszemy "xml" czy dopuszczalne są tutaj spacje? czy przed i
po znaku równości mogą być spacje? Jak napisać najszybszą klasę
parsującą tylko tę deklarację, czyli sprawdzenie że musi kończyć się na "?>"

szomiz

unread,
Nov 5, 2011, 2:16:10 PM11/5/11
to
Użytkownik "Borneq" <bor...@antyspam.hidden.pl> napisał w wiadomości
news:j93t3d$9mj$2...@inews.gazeta.pl...

> <?xml version="1.0" encoding="utf-8"?>
> <?xml version="1.0" encoding="utf-8" ?>

Z dokladnoscia do sprawdzenie prologu *nic* nie mowi o tym,

> czy plik jest prawidłowym XML-em z kodowaniem UTF-8 czy też dowolnym innym
> plikiem tekstowym.

http://www.w3.org/TR/xml/#sec-prolog-dtd

> Czy po "<?" piszemy "xml" czy dopuszczalne są tutaj spacje? czy przed i

Niedopuszczalne.

[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S?
'?>'


> po znaku równości mogą być spacje? Jak napisać najszybszą klasę

Moga.

[24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"'
VersionNum '"')

[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'"
EncName "'" )

[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"'
('yes' | 'no') '"'))[VC: Standalone Document Declaration]

[25] Eq ::= S? '=' S?

[3] S ::= (#x20 | #x9 | #xD | #xA)+

> parsującą tylko tę deklarację, czyli sprawdzenie że musi kończyć się na
> "?>"

Klase? Wyrazeniem regularnym to spawdzisz.

sz.


0 new messages