External entity is null in file

Viewed 39

I have been trying to fixed it since yesterday. I try to use external entity in my xml file. When i open the file in browser the place when should be a text from file is null. I used external entity betwen tags <płeć> </płeć> ( <płeć>&encjez;</płeć> ). In browser i see all good but the place when should be text from file looks <płeć/>. There is nothing. I wached yt, read articles in my opinion i did everything good. I dont know what should i do. It gives me no peace. Please help me.

//xml file here

<!DOCTYPE lista_filmów [
    
    <!ELEMENT lista_filmów (film+)>
    <!ELEMENT film (tytuł, rok_produkcji, reżyser)>
    <!ATTLIST film category CDATA #REQUIRED>
    <!ELEMENT reżyser (imie, nazwisko, płeć)>
    <!ELEMENT tytuł (#PCDATA)>
    <!ATTLIST tytuł jezyk CDATA #REQUIRED>
    <!ELEMENT rok_produkcji (#PCDATA)>
    <!ELEMENT imie (#PCDATA)>
    <!ELEMENT nazwisko (#PCDATA)>
    <!ELEMENT płeć (#PCDATA)>
    <!ENTITY encjaw "Whedon" >
    <!ENTITY encjez SYSTEM "file:///C:/Users/Legion/Desktop/kss/encjez.txt">
]>

<lista_filmów>
<!-- POCZATEK Joss Whedon-->

<!-- Film z encją predefiniowaną-->
    <film category = "Akcja">
        <tytuł jezyk = "ang">Avengers</tytuł>
        <rok_produkcji>2012 &lt; </rok_produkcji>
        <reżyser>
            <imie><![CDATA[ Joss <> ]]></imie>
            <nazwisko>&encjaw;</nazwisko>
            <płeć>&encjez;</płeć>
        </reżyser>
    </film>
</lista_filmów>
1 Answers

Short answer:
Browsers won't probably load external entities to avoid XXE attacks.

External Entity declaration could also be placed outside square brackets

<!DOCTYPE lista_filmów SYSTEM "file:///home/lmc/tmp/entity.dtd" [
    
    <!ELEMENT lista_filmów (film+)>
    <!ELEMENT film (tytuł, rok_produkcji, reżyser)>
    <!ATTLIST film category CDATA #REQUIRED>
    <!ELEMENT reżyser (imie, nazwisko, płeć)>
    <!ELEMENT tytuł (#PCDATA)>
    <!ATTLIST tytuł jezyk CDATA #REQUIRED>
    <!ELEMENT rok_produkcji (#PCDATA)>
    <!ELEMENT imie (#PCDATA)>
    <!ELEMENT nazwisko (#PCDATA)>
    <!ELEMENT płeć (#PCDATA)>
    <!ENTITY encjaw "Whedon" >
    
]>

<lista_filmów>
<!-- POCZATEK Joss Whedon-->

<!-- Film z encją predefiniowaną-->
    <film category = "Akcja">
        <tytuł jezyk = "ang">Avengers</tytuł>
        <rok_produkcji>2012 &lt; </rok_produkcji>
        <reżyser>
            <imie><![CDATA[ Joss <> ]]></imie>
            <nazwisko>&encjaw;</nazwisko>
            <płeć>&encjez;</płeć>
        </reżyser>
    </film>
</lista_filmów>

Entity.dtd contains:

<!ENTITY encjez "LMC">

Testing on command line with xmllint

xmllint --loaddtd --noent --xpath '//płeć' tmp.xml ; echo
<płeć>LMC</płeć>
Related