Diskuse: Přehled článků z RSS ve stránce ASP.NET
Zdravim, mel bych pripominku. Je velice dobre (a doporucene) streamy a readery zavirat. Coz v tomto pripade chybi. Takze bych do funkce getXML pridal odchyceni chyb a uzavirani jak WebResponse streamu tak take XmlTextReaderu, s tim, ze pripadna chyba by tedy mela probublat vyse.
Dale bych se chtel zeptat, proc byl pouzit user control namisto custom control? Pokud to je jenom z duvodu, ze user control se da cachovat, tak si myslim, ze nacachovat vraceny xml (pripadne celou transformaci) do objektove cache vychazi podobne, a takovy prvek by se snaze vkladal do stranek.
(Zaroven by takovy custom control mohl obsahovat Template pro neznale XSL, kdy by si mohli definovat vzhled a zobrazeni zakladnich udaju z RSS pomoci tohoto template.) To uz by samozrejme byla pouze takova tresnicka na dortu. Diky Jarda
Dale bych se chtel zeptat, proc byl pouzit user control namisto custom control? Pokud to je jenom z duvodu, ze user control se da cachovat, tak si myslim, ze nacachovat vraceny xml (pripadne celou transformaci) do objektove cache vychazi podobne, a takovy prvek by se snaze vkladal do stranek.
(Zaroven by takovy custom control mohl obsahovat Template pro neznale XSL, kdy by si mohli definovat vzhled a zobrazeni zakladnich udaju z RSS pomoci tohoto template.) To uz by samozrejme byla pouze takova tresnicka na dortu. Diky Jarda
Jen bych připomněl, že použití disable-output-escaping je dobré se vyhnout vždy, kdy to jen jde. V tomto případě pro vložení pevné mezery do výstupu stačí v XSLT stylu napsat , případně si jde pro tento znak definovat interní textovou entitu
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
<xsl:stylesheet ...
a ve stylu pak používat přímo
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
]>
<xsl:stylesheet ...
a ve stylu pak používat přímo
Takže tam kde v příspěvku něco chybí, tak je to dvakrát sekvence znaků ampersand, #, 1, 6, 0, ; a potřetí ampersand, n, b, s, p, ;
Proc by se melo vyhybat konstrukci <xsl:text disable-output-escaping="yes"> </xsl:text> ?
disable-output-escaping (dále jen d-o-e) je volitelná vlastnost, nemusejí ji podporovat všechny XSLT procesory, a styl je pak nepřenositelný (resp. v některých pocesorech generuje nesmysly).
Horší je, že při použití této instrukce lze snadno generovat kód XML/HTML, který není well-formed. Princip XSLT zaručuje, že bez použití d-o-e bude výstup well-formed (s výjimkou více než jednoho kořenového elementu).
Za 5 let, co používám XSLT, jsem d-o-e opravdu potřeboval jen jednou, a to když jsem obcházel chybu v nějaké verzi Xalanu.
Horší je, že při použití této instrukce lze snadno generovat kód XML/HTML, který není well-formed. Princip XSLT zaručuje, že bez použití d-o-e bude výstup well-formed (s výjimkou více než jednoho kořenového elementu).
Za 5 let, co používám XSLT, jsem d-o-e opravdu potřeboval jen jednou, a to když jsem obcházel chybu v nějaké verzi Xalanu.
Diky za odpoved, s podporou d-o-e v XSLT procesorech to beru, ale jeste by me zajimalo jak je to s tim well formed dokumentem. Proc to zpusobi nevalidni dokument? Atribut d-o-e prece zpusobi pouze doslovne zkopirovani znaku v pripade & to na vystup vytiskne & ....
Při použití d-o-e můžete do stylu vkládat věci, které by jinak XSLT procesor odmítl. Třeba (používá hranaté závorky, místo ostrých, zavináč místo ampersandum buhví co by s nimi interval udělal):
[xsl:text d-o-e="yes"]@lt;/neorevrenyTag@gt;[/xsl:text]
[xsl:text d-o-e="yes"]@amp;nbsp[/xsl:text]
XSLT procesor neindikuje chybu (styl je well-formed), ale na výstupu dostanete chyby: koncový tag, který nemá odpovídající počáteční, nebo entitu, která není ukončena středníkem.
[xsl:text d-o-e="yes"]@lt;/neorevrenyTag@gt;[/xsl:text]
[xsl:text d-o-e="yes"]@amp;nbsp[/xsl:text]
XSLT procesor neindikuje chybu (styl je well-formed), ale na výstupu dostanete chyby: koncový tag, který nemá odpovídající počáteční, nebo entitu, která není ukončena středníkem.
XSLT styl je zbytečně komplikovaný. Místo local-name() = 'něco' stačí psát něco, protože RSS nepoužívá jmenné prostory. Pokud by je používalo, je stejně správný postup nadeklarovat si tento jmenný prostor ve stylu a v XPath dotazech pak psát prefix:něco.
Teď ještě opravím sebe: něco se píše místo celého *[local-name()='něco']