Avatar billede beef12 Nybegynder
06. oktober 2005 - 15:53 Der er 10 kommentarer og
1 løsning

Fejl i stylesheet

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:saw="com" version='1.0'>
<xsl:template match='/'>
<root>
<xsl:for-each select='//CatalogObj'>
<catalog>
<xsl:element name='path'><xsl:value-of select='@path'/></xsl:element>
<xsl:element name='type'><xsl:value-of select='@signature'/></xsl:element>
<xsl:element name='subjectarea'><xsl:value-of select='report/criteria/@subjectArea'/></xsl:element>   
<xsl:template match='/'>
<column><xsl:value-of select='//CatalogObj/report/criteria/columns/column/@formula'/></column>
</xsl:template>
</catalog>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>

Får fejlen: ---> System.Xml.Xsl.XsltException: 'xsl:template' cannot be a child of 'catalog' element.

Hvorfor?
Avatar billede perlund Nybegynder
06. oktober 2005 - 15:58 #1
Hvorfor er det lige du har <xsl:template match='/'> som parent til din <column ?? Jeg kan umiddelbart ikke lige se meningen.
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:11 #2
Ja det har du jo sådan set ret i - men det bliver ikke ret meget bedre når jeg fjerner den :-)
Så får jeg den øverste <column> i XML-filen som går igen i hele output filen.
Avatar billede perlund Nybegynder
06. oktober 2005 - 16:15 #3
Nu er det lidt svært at vide, hvordan du gerne vil have outputtet til at være, men hvad ved følgende:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saw="com" version="1.0">
    <xsl:template match="/">
        <root>
            <xsl:for-each select="//CatalogObj">
                <catalog>
                    <xsl:element name="path">
                        <xsl:value-of select="@path"/>
                    </xsl:element>
                    <xsl:element name="type">
                        <xsl:value-of select="@signature"/>
                    </xsl:element>
                    <xsl:element name="subjectarea">
                        <xsl:value-of select="report/criteria/@subjectArea"/>
                    </xsl:element>
                        <column>
                            <xsl:value-of select="report/criteria/columns/column/@formula"/>
                        </column>
                </catalog>
            </xsl:for-each>
        </root>
    </xsl:template>
</xsl:stylesheet>
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:23 #4
Output skal se nogenlunde sådan her ud:
<root>
<catalog>
    <path>dfsdfs</path>
    <type>ghf</type>
    <subjectarea>dssf
    </subjectarea>
    <column>
    </column>
  </catalog>
  <catalog>
    <path>/her/test</path>
    <type>global</type>
    <subjectarea>dhgdgh
    </subjectarea>
    <column>fdgdfg
    </column>   
<column>dfgdfg
    </column>
    <column>fdgdfg
    </column>
  </catalog>
</root>

Dvs. der er flere forekomster af <column>, hvilket dit eksempel, såvidt jeg kan se, ikke trager højde for.
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:23 #5
giver det bedre mening?
Avatar billede perlund Nybegynder
06. oktober 2005 - 16:25 #6
Dette er en mulighed:
                    <xsl:for-each select="report/criteria/columns/column">
                        <column>
                            <xsl:value-of select="@formula"/>
                        </column>
                    </xsl:for-each>

Altså princippet - du skal lige rette det til. Jeg kender jo ikke din XML.
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:30 #7
Det gjorde jeg og fik lavet en masse ballade. Jeg endte med at få alle columns i hele filen under hver enkelte catalog-element. Hvad gjorde jeg galt tror du?

Jeg prøver lige igen...
Avatar billede perlund Nybegynder
06. oktober 2005 - 16:32 #8
Du kom nok til at bruge noge ala //columns :) // betyder at hele træet søges igennem.
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:33 #9
du har ret - problem løst.

Top dollar - smid et svar :-)
Avatar billede perlund Nybegynder
06. oktober 2005 - 16:33 #10
np:)
Avatar billede beef12 Nybegynder
06. oktober 2005 - 16:35 #11
sådan - så er der points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester