Preskoči na glavno vsebino

Chyba: The value of attribute "filter" must not contain the '<' character

V XML sa znaky so zvláštnym významom zapisujú entitami, v URL percentami

Avtor: Petr Pech

Import skončí chybou parsera:

The value of attribute "filter" associated with an element type "faktura-vydana" must not contain the '<' character.

Chyba nepochádza z ABRA Flexi, ale už od XML parsera — znak < nesmie byť v hodnote atribútu uvedený priamo, pretože by v XML začínal nový element.


V XML: entity

V atribútoch aj v texte elementov sa znaky so zvláštnym významom zapisujú entitami:

Znak

Zápis v XML

<

&lt;

>

&gt;

&

&amp;

"

&quot;

Filter v importnom XML potom vyzerá takto:

<winstrom version="1.0">
<faktura-vydana filter="id &lt; 100">
<popis>hromadná změna</popis>
</faktura-vydana>
</winstrom>


V adrese: percentá

V URL sa naopak entity nepoužívajú — tam sa kóduje percentovým zápisom, teda %3C namiesto < a %20 namiesto medzery. Sú to dva rôzne mechanizmy, ktoré sa nezamieňajú:

URL:  /c/{firma}/faktura-vydana/(datSplat%3Enow()).xml
XML: <faktura-vydana filter="datSplat &gt; now()">

💡 Kódovanie si nemusíte robiť ručne — knižnice na prácu s XML entity doplnia samy a pre URL má väčšina jazykov hotovú funkciu. Ručné skladanie reťazcov je najčastejší zdroj týchto chýb.


Súvisiace

Ste s tem dobili odgovor na svoje vprašanje?