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