To vypada velice dobre.

Diky moc!

Martin

Martin Kuba napsal(a):
Martin Jedlička napsal(a):
Zdravim,

  mam dotaz ohledne hledani elementu v XML souboru.
Mam nize uvedeny XML soubor (tento soubor je upraveny format DWARF2), ktery obsahuje jednotlive elementy. Kazdy element ma nejake 'idref', ktery odkazuje da dalsi element. Priklad : variable -> volatile_type -> far_type -> typedef -> structure_type A potrebuju zjistit nejakym dotazem nazev struktury (t_bitStruktura), jeji polozky (b0, b1) atd...
Mam na toto pouzit XPath nebo XQuery? Co je lepsi? Nejaky priklad?

Napsal jsem si krátkou XSLT trasnformaci, která vloží
odkazované tagy na místo tagu <ref>:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";> <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no"/>

    <xsl:template match="/">
        <xsl:apply-templates select="/root/variable"/>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="ref">
        <xsl:variable name="idval" select="string(@idref)"/>
        <xsl:apply-templates select="//[EMAIL PROTECTED]" />
    </xsl:template>

</xsl:stylesheet>

a když tím vstupní data proženu, dostanu pěkně stromovou strukturu:

<variable id="0x6b">
    <location>0x00000000</location>
    <name>promenna1</name>
    <volatile_type id="0x5ab">
        <far_type id="0x5b0">
            <typedef id="0x596">
                <name>t_bitStruktura</name>
                <structure_type id="0x4b8">
                    <name>t_bitStruktura</name>
                    <byte_size>

    ... atd.

a v té už se dají informace snadno nalézt pomocí XPath, např.
název struktury

   /variable/volatile_type/far_type/typedef/name/text()

Takže bych to dělal transformací a následně XPath.

Makub

Odpovedet emailem