Avatar billede ebberup Nybegynder
02. juni 2004 - 09:37 Der er 3 kommentarer

Internet Explorer vil ikke vise resultat af XML to HTML

På en enkelt PC har jeg problemer med Internet Explorer 6.0.2800 når den skal lave en simpel transform af en XML side til HTML ved hjælp af et XSL dokument. Selv det simpleste eksempel giver ingen resultat:
Document.xml:
<?xml version="1.0" ?>
<?xml-stylesheet type='text/xsl' href='document.xsl'?>
<!--My first XML document -->
  <BankAccount>
        <Number>1234</Number>
        <Name>Darshan Singh</Name>
        <Type>Checking</Type>
        <OpenDate>11/04/1974</OpenDate>
        <Balance>25382.20</Balance>
  </BankAccount>


document.xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="html" encoding="UTF-8" version="4.0" indent="yes" />

  <xsl:template match="/">
    <HTML>
    <BODY>
    <TABLE BORDER="1" bgcolor="#EEEEEE">
        <xsl:apply-templates select="BankAccount" />
    </TABLE>
    </BODY>
    </HTML>
  </xsl:template>

  <xsl:template match="BankAccount">
    <TR>
      <xsl:apply-templates select="Number" />
      <xsl:apply-templates select="Name" />
      <xsl:apply-templates select="Type" />
      <xsl:apply-templates select="OpenDate" />
      <xsl:apply-templates select="Balance" />
    </TR>
  </xsl:template>


    <xsl:template match="Number">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
    </TD>
    </xsl:template>

    <xsl:template match="Name">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
      </TD>
    </xsl:template>

    <xsl:template match="Type">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
      </TD>
    </xsl:template>

    <xsl:template match="OpenDate">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
      </TD>
    </xsl:template>

    <xsl:template match="Balance">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
      </TD>
    </xsl:template>

</xsl:stylesheet>

Resultatet er en blank html side i IE.
Er der nogen der har en idé om hvad der er galt?
Ebberup
Avatar billede davidchristensen Praktikant
28. juni 2004 - 07:21 #1
<xsl:template match="BankAccount">
    <TR>
      <xsl:apply-templates select="Number" />
      <xsl:apply-templates select="Name" />
      <xsl:apply-templates select="Type" />
      <xsl:apply-templates select="OpenDate" />
      <xsl:apply-templates select="Balance" />
    </TR>
  </xsl:template>


Skal laves om til:

<xsl:template match="BankAccount">
    <TR><TD>
      <xsl:value-of select="/*" />
    </TD></TR>
</xsl:template>

..så skulle det vist virke ;)

David
-
Avatar billede ebberup Nybegynder
28. juni 2004 - 11:19 #2
Nej David, det var ikke det der skulle til.
Dit forslag placerer alle værdier i en kolonne, men på min PC vises der stadig intet.
Jeg tror ikke der er noget galt med hverken XSL eller XML.
Der er ingen transformations der virker i min IE. Det er mere sansynligt at det er et problem med versioner af dll'er eller lignende. Jeg har manuelt sammenlignet min installation med en der virker og ikke fundet forskelle.
Avatar billede nute Nybegynder
16. januar 2005 - 12:55 #3
Nu har jeg ikke nogen løsning til dit problem, da denne transformation, sagtens kan køre i min IE 6.0.2800.1106.xpsp2.040919-1003, men jeg vil bare kommentere dit xsl.

For at spare antal linier kode, kan du lave templates for alle noder, der skal transformeres ens, på denne måde:

<xsl:template match="Number|Name|Type|OpenDate|Balance">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:apply-templates />
    </TD>
    </xsl:template>

<xsl:apply-templates />i denne template, er sådan set unødig ... og den hurtigste måde at skrive indhold i noden ud, er at bruge value-of:

<xsl:template match="Number|Name|Type|OpenDate|Balance">
      <TD STYLE="font-size:12pt font-family:serif">
        <xsl:value-of select="."/>
    </TD>
    </xsl:template>

hvis du alligevel ved at din xml ikke indeholder subnoder, for denne node, så er det ekstra arbejde for parseren, at skulle prøve at finde subnoder.

/nute
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

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