Přeskočit na hlavní obsah

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

Znaky se zvláštním významem se v XML zapisují entitami, v URL procenty

Autor: Petr Pech

Import skončí chybou parseru:

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

Chyba nepřichází z ABRA Flexi, ale už od XML parseru — znak < nesmí být v hodnotě atributu uveden přímo, protože by v XML zahajoval nový element.


V XML: entity

V atributech i v textu elementů se znaky se zvláštním významem zapisují entitami:

Znak

Zápis v XML

<

&lt;

>

&gt;

&

&amp;

"

&quot;

Filtr v importním XML pak vypadá takto:

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


V adrese: procenta

V URL se naopak entity nepoužívají — tam se kóduje procentovým zápisem, tedy %3C místo < a %20 místo mezery. Jsou to dva různé mechanismy, které se nezaměňují:

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

💡 Kódování si nemusíte dělat ručně — knihovny pro práci s XML entity doplní samy a pro URL má většina jazyků hotovou funkci. Ruční skládání řetězců je nejčastější zdroj těchto chyb.


Související

Dostali jste odpověď na svou otázku?