Newsgroup: it.comp.www.php
Titolo: parsing file XML

Forse sono OT,
    devo fare il parsing di un file XML generato da FileMaker. In 
pratica mi viene generato un file con estensione xml nel quale tutti i 
marcatori sono aperti e chiusi correttamente ma all'interno del quale 
trovo di tutto: dai caratteri di trademark e registered, lettere 
accentate, linefeed ecc. ecc. e per di piu' non posso validare tale file 
in quanto la URL specificata non � raggiunbile.
Domande:
1. un documento xml del genere pi� essere definito cmq well-formed ?
2. se i caratteri segnalati prima non sono correttamente codificati 
secondo la codifica del documento... cosa succede?
ringrazio in anticipo
-- 
Mess
http://www.mibmagazine.it

Mess ha scritto:

Per quel che ne so (sto documentandomi anche io):
1: si. Essere XML non dipende dalla validazione DTD, ma � sufficiente 
che i tag siano well-formed (punto 3 della definizione di 'well-formed 
XML document'), oltre ai punti 1 e 2.
2: XML � utf-8 o utf-16, quindi se leggi il file lo devi considerare 
utf-8 se non ha il Byte Order Mark (0xFEFF) oppure se ha il BOM di utf-8 
(che per� non � obbligatorio). PHP tollera solo la codifica utf-8, 
quindi se � utf-16 devi farti una funzione di conversione. E' comunque 
possibile usare codifiche diverse da Unicode, previa indicazione della 
codifica usata. In questo caso si DEVE indicare nell'intestazione <?xml 
... > il tipo di codifica che � stata usata.
Tutto questo S.E.& O.


Ti ringrazio in anticipo per la risposta.
Ci sono due cose che mi lasciano perplesso del file che mi viene 
generato fa filemaker:
1. magari sbagliando, ma io ho sempre saluto che i caratteri "speciali" 
tipo le lettere accentate, il simbolo trademark TM e register R, per 
essere trattati correttamente dai parser devono essere rappresentati nel 
corrispondernte stringa nella forma &#x0090; . cosa che non succede per 
il file xml generato.
2. il parser mi da un nsacco di problemi nella conversione di questi 
caratteri prima di essere persistiti nel database.
avete suggerimenti oppure e' la prassi ? Personalmente ritengo che il 
problema primario sia che il file.xml generato da filemaker sia poco 
conforme agli stamdard e poco usabile... Voi che dite?
-- 
Mess
http://www.mibmagazine.it

Mess ha scritto:

Dalle specifiche XML (
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
):
----cut here
The ampersand character (&) and the left angle bracket (<) MUST NOT 
appear in their literal form, except when used as markup delimiters, or 
within a comment, a processing instruction, or a CDATA section. If they 
are needed elsewhere, they MUST be escaped using either numeric 
character references or the strings "&amp;" and "&lt;" respectively. The 
right angle bracket (>) may be represented using the string "&gt;", and 
MUST, for compatibility, be escaped using either "&gt;" or a character 
reference when it appears in the string "]]>" in content, when that 
string is not marking the end of a CDATA section.
...
To allow attribute values to contain both single and double quotes, the 
apostrophe or single-quote character (') may be represented as "&apos;", 
and the double-quote character (") as "&quot;".
----cut here
Quindi solo " ' < > & devono essere obbligatoriamente convertiti tramite 
sequenze di escape.
Per quanto riguarda il tuo xml, ti conviene importarlo in un editor xml, 
e vedere "che effetto che fa". Se � 'regolare' dovresti vedere l'albero 
da un lato ed i dati dall'altro.
Tutto questo, ovviamente, S.E.& O.