java -Xmxmoc_velke_cislo ;-) XSLT hold zere :-( neznam presne streva Xalanu, ale **.dom.DOMAdaptor mluvi samo za sebe...
Proto doporucuji ten SAX. Pokud mas zarucenou posloupnost elementu (treba ze XSD definuje sequenci), je to rucne nejlepsi. tapik On Wed, May 21, 2008 at 02:02:31PM +0200, Martin Jedlička wrote: > Narazim na problem. > To moje XML, ktere chci transformovat pomoci XSLT ma nekolik desitek > tisic radku. > Kdyz na to pustim tuto transformaci, tak Java vyhodi vyjimku (asi po 20 > vterinach behu transformace): > > Exception in thread "main" java.lang.StackOverflowError > at > com.sun.org.apache.xml.internal.serializer.WriterToUTF8Buffered.write(Unknown > Source) > at > com.sun.org.apache.xml.internal.serializer.ToStream.processAttributes(Unknown > Source) > at > com.sun.org.apache.xml.internal.serializer.ToStream.closeStartTag(Unknown > Source) > at > com.sun.org.apache.xml.internal.serializer.ToStream.characters(Unknown > Source) > at > com.sun.org.apache.xml.internal.utils.FastStringBuffer.sendSAXcharacters(Unknown > > Source) > at > com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2.copyTextNode(Unknown > Source) > at > com.sun.org.apache.xalan.internal.xsltc.dom.SAXImpl.shallowCopy(Unknown > Source) > at > com.sun.org.apache.xalan.internal.xsltc.dom.DOMAdapter.shallowCopy(Unknown > Source) > > pouzivam tento kod transformace: > > TransformerFactory tfactory = TransformerFactory.newInstance(); > Templates template = tfactory.newTemplates(s_XSLfile); > javax.xml.transform.Transformer transformer = template.newTransformer(); > transformer.transform(s_XMLfile, result); > > 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
