Meddelande

Minska
No announcement yet.

Är detta en giltig XML-sträng?

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Är detta en giltig XML-sträng?

    Ska med hjälp av XSLT formatera en fil från en kund så vi kan importera det i vår databas. Men jag har än så länge inte lyckats något bra. Ett utdrag ur kundens fil:

    Kod:
    <ss:Worksheet ss:Name="Tabell1">
    		<Row ss:Height="12.8409">
    			<Cell>
    				<Data ss:Type="Number">13925</Data>	
    			</Cell>
    			<Cell ss:Index="7">
    				<Data ss:Type="String">1 TMPK</Data>
    			</Cell>
    		</Row>
    </ss:Worksheet>
    Notera det som är i fetstil, dvs. "ss:" före varje atributt. Är det giltiga att ha detta? Hur ska jag ex. få fram värdet ur "Name" från "Worksheet" när det är
    "ss:" före?
    Last edited by KoTTeN; 2012-01-08, 15:26.
    Att rädda ett liv är att rädda en hel värld!
    Mvh Ronny "KoTTeN" Andersson

  • #2
    Ja, det har att göra med namespace. Se http://www.w3schools.com/xml/xml_namespaces.asp

    Men däremot måste det nog finnas en slut-tagg på Cell i båda fallen.

    Kommentera


    • #3
      Tack för svaret! Det var jag som var lite snabb att skriva (glömde </code> - nu redigerat).

      Hur gör jag för att med XSLT få fram "ss:Worksheet"? Jag har försökt med följande:

      Kod:
      <?xml version="1.0" encoding="ISO-8859-1"?>
      
      <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
      <xsl:template match="ss:Worksheet[@Name=Tabell]">
        <html>
        <body>
        <h2>Test</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>Kundnummer</th>
            <th>Beställning</th>
         </tr>
          
           <xsl:for-each select="Row">
          <tr>
            <td><xsl:value-of select="Cell[1]/Data"/></td>
            <td><xsl:value-of select="Cell[2]/Data"/></td>
          </tr>
          </xsl:for-each>
          
        </table>
        </body>
        </html>
      </xsl:template>
      
      </xsl:stylesheet>
      Men får inget resultat alls.
      Att rädda ett liv är att rädda en hel värld!
      Mvh Ronny "KoTTeN" Andersson

      Kommentera


      • #4
        Vad använder du för parser? Är den 2.0-kompatibel kan du gå direkt mot det lokala namnet:
        xslt:

        <xsl:for-each select="//*[local-name() = 'Row']">
        ...
        </xsl:for-each>


        Om det är en 1.0-parser (typ alla webläsare) så får du peka mot rätt schema och namespace-deklaration. Det ser ut som en MS Office-genererad XML (Excel SpreadSheet), så kanske fungerar följande rakt av:
        xslt:

        <xsl:stylesheet ... xmlns:os="urn:schemas-microsoft-com:office:spreadsheet">
        <xsl:for-each select="//os:Row">
        ...
        </xsl:for-each>
        </xsl:stylesheet>
        "Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"

        Kommentera

        Working...
        X