Tag v HTML, XML a v iných jazykoch typu *ML

S pojmom „tag“ sa určite stretnete vždy, keď sa hovorí o jazykoch typu „Markup Language“. Spoznáte ich podľa toho, že ich skratka takmer vždy končí písmenami „ML“. Typickými príkladmi sú HTML a XML. Tagy sú ich základnou črtou, možno ich nazvať aj príkazmi týchto jazykov. S trochou nadsázky sa dá povedať, že akýkoľvek jazyk tohto typu je len čistý text, do ktorého boli pridané tagy.

Tag je časť textu, ohraničená znakmi „<“ a „>“. Ak potrebujete tieto znaky použiť v texte priamo, musíte ich zapísať špeciálnym spôsobom „&lt;“ respektíve „&gt;“. Tagy môžu obsahovať aj parametre vo forme názov parametra, znak „=“ a hodnota. Tag neobsahujúci znak „/“ je otvárací, tag vo forme „</...>“ zatvárací a „<.../>“ uzavretý. (Pre pochopenie viď príklady.)

Jednoduchý tag, ktorý v HTML spôsobí, že text sa zobrazí hrubým písmom:
 V tejto vete budú <b>tieto tri slová</b> hrubým písmom. 
Na základe parametra „align“ (zarovnanie) nastaveného na „right“ (vpravo), by tento kód v HTML zobrazil túto vetu zarovnanú na pravý okraj:
 <p align="right">Tento text bude zarovnaný doprava.</p> 
Na mieste tagu „br“ by sa v HTML vytvoril nový riadok. Keďže uzatvárací pri „br“ nemá význam (lebo nemá účinok od-do, ako napríklad hrubé písmo), je priamo uzavretý. Takéto niečo v klasickom HTML nie je potrebné, ale XML (a teda aj XHTML) to už vyžaduje.
 Toto bude na prvom riadku<br/>a toto už na druhom. 

Pre použitie tagov netreba veľa pravidiel, väčšina z nich je viditeľná už z uvedených príkladov. Hlavne si treba dávať pozor, aby ste nepoužili znaky „<“ a „>“ - tie treba v texte i v atribútoch tagov nahradiť takzvanými entitami, konkrétne „&lt;“ respektíve „&gt;“.

V HTML sa neraz môžete stretnúť so zápisom atribútov bez úvodzoviek (napríklad „<font color=white size=5>“). Aj keď to aktuálny štandard HTML ešte dovoľuje, veľmi sa odporúča tento zápis nepoužívať. Jednak môžete ľahko spraviť chybu a jednak XML (a teda ani XHTML) už takýto zápis nedovoľujú - hodnota každého atribútu, dokonca aj keď je číselná, musí byť uzavretá v úvodzovkách.

Pbatenghyngvbaf Lbh ner n bofreinag jro unpxre Vs Lbh jnag n wbo va bhe pbzcnal cyrnfr znvy gb gbhtuthl ng ci2p qbg fx Unir n avpr qnl
Nemá to jiskru.
		-- Diesel
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }
        
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }