ugrás a tartalomhoz

xslt attributum kezeles

bartak · 2008. Okt. 27. (H), 14.55
Sziasztok!

xslt-vel szeretnek egy xml-t modositani:

input xml:

<elemnt>
<subelemnt id="1" txt="valami"/>
<subelemnt id="2" txt="valami"/>
</elemnt>

xslt feladata lenne: ahol az id=1 ott a txt legyen "ujszoveg"

output xml:

<elemnt>
<subelemnt id="1" txt="ujszoveg"/>
<subelemnt id="2" txt="valami"/>
</elemnt>

A megoldas lehet hogy egyszeru, csak nem nekem...
Elore is koszonom segitsegeteket.
 
1

Ez is egy lehetséges megoldás

minczerl · 2008. Okt. 27. (H), 22.27

    <xsl:template match="elemnt">
        <xsl:element name="elemnt">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="subelemnt">
        <xsl:element name="subelemnt">
            <xsl:choose>
                <xsl:when test="@id = 1">
                    <xsl:attribute name="txt">
                        <xsl:text>ujszoveg</xsl:text>
                    </xsl:attribute>
                    <xsl:attribute name="id">
                        <xsl:value-of select="@id"/>
                    </xsl:attribute>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:copy-of select="@*"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:element>
    </xsl:template>
De ajánlom figyelmedbe ezt a pdf-et
XSLT gyorstalpaló: www.inf.u-szeged.hu/~dombijd/edu/fpt2/4/doc/XML_hun.pdf ;)
2

mukodik :)

bartak · 2008. Okt. 28. (K), 09.47
Koszonom segitsegedet, nagyon orultem neki, ugyanis
sokat probalkoztam mielott a forumhoz "nyultam".
Az ajanlott olvasmany is hasznos volt, sok reszletre
fenyt deritett, amit mashol nagyvonaluan atlepnek.

Lenne meg egy kerdesem: egy adott elem attributumanak selectalasa lepesnek
minosul-e a grafban?
A szintaktika szerint igen pl: Elem/@attributum
de a gyakorlat alapjan vegyesek a tapasztalataim ||:(
3

Válaszom igen...

minczerl · 2008. Okt. 28. (K), 11.17
Viszont tudnál-e mutatni olyan példát ami a gyakorlati felhasználáskor elbizonytalanított?
4

pl.

bartak · 2008. Okt. 28. (K), 13.26
pl. maradjunk az altalad kuldott kodnal:
# <xsl:template match="subelemnt">  
#     <xsl:element name="subelemnt">  
#         <xsl:choose>  
#             <xsl:when test="@id = 1">
ha a match-al a subelemnt-et selectalod, a choos-ban hogyan tudod tesztelni
a @id attributumot, ha egy emelettel meg feljebb vagy?
5

vezérlési szerkezet

minczerl · 2008. Okt. 28. (K), 23.09
A choose az csak egy vezérlési szerkezet(phpban talán a switch case szerkezetre hasonlít leginkább) a tesztelés alapesetben kiválasztott elemre vonatkozik ha nem adsz meg mondjuk egy másikat az xmlben.

Például ebben az esetben a szülő elem id attribútumát vizsgálja.

<xsl:choose>
<xsl:when test="parent::elemnt/@id = 1"></xsl:when>
</xsl:choose>
6

ok

bartak · 2008. Okt. 30. (Cs), 08.02
Egy xml alapu adatbazis update-t kellett csinalnom,
igy tevedtem ingovanyos teruletre.
Az en szakteruletem igazabol a c++, xslt teruleten zoldfulu vagyok.

Koszonom megegyszer segitsegedet.