XSLT , XML, Schema-Datei - Namespace-Problem

  • Allgemein

    XSLT , XML, Schema-Datei - Namespace-Problem

    Hallo,

    ich arbeite mich derzeit in XML und damit auch XSD sowie XSLT ein.

    Nun habe ich folgendes Problem:

    Meine XML verweist auf eine XSD, zwecks der validierung, um zu sagen, wie meine XML aussehen muss.
    Auch habe ich mir eine XSLT geschrieben, welche die Informationen der XML in HTML umwandelt (Darstellung in einer Tabelle). Derzeit einfach Übungsdateien.

    Ich habe alle Dateien mit VS 2010 erstellt, als ich in der XML meine XSD eingestellt habe, wurde automatisch ein Target-Namespace zugewiesen.
    Auch habe ich einen Verweis auf meine XSLT eingebaut, da diese ja verwendet werden soll. Es werden jedoch nur dann Übereinstimmungen gefunden, wenn ich in meine XML keinen Target-Namespace angebe. Was ja so nicht sein soll.

    Derzeit habe ich es in meiner XSLT so gelöst, das ich mir eine Namespace-Deklaration angelegt habe und jedes Element einzeln mit dem Namespace verknüpfe (hier "foobar")

    Wie kann ich es machen, dass ich einmal den Namespace angebe und der dann Benutzt wird, ohne immer dieses "foobar" vor jedes Element schreiben zu müssen? Google-Suche hat bisher nicht geholfen, werde aber weiter suchen.

    XML

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <?xml-stylesheet type="text/xsl" href="XMLBrowserViewer.xslt" ?>
    3. <doc xmlns="http://tempuri.org/XMLSchema.xsd">
    4. <buchliste>
    5. <buch name="Harry Potter">
    6. <band>2</band>
    7. <bandname>Die Kammer des Schreckens</bandname>
    8. <author>J.R.Rowling</author>
    9. <verlag>Carlsen</verlag>
    10. <isbn>123-1234567-12345-12</isbn>
    11. </buch>
    12. <buch name="Elfenkrieger">
    13. <band>3</band>
    14. <bandname>Das Fjordland</bandname>
    15. <author>Berhard Hennen</author>
    16. <verlag>Heyne Verlag</verlag>
    17. <isbn>123-1234567-12345-12</isbn>
    18. </buch>
    19. <buch name="Elfenkrieger">
    20. <band>2</band>
    21. <bandname>Die Ordensburg</bandname>
    22. <author>Berhard Hennen</author>
    23. <verlag>Heyne Verlag</verlag>
    24. <isbn>123-1234567-12345-43</isbn>
    25. </buch>
    26. <buch name="Die Chroniken der Nebelkriege">
    27. <band>1</band>
    28. <bandname>Das unendliche Licht</bandname>
    29. <author>Phillip Finn</author>
    30. <verlag>Carlsen</verlag>
    31. <isbn>432-4354325-12343-12</isbn>
    32. </buch>
    33. <buch name="Die Bedrohung">
    34. <author>Wolfgang und Heike Hohlbein</author>
    35. <verlag />
    36. <isbn>423-4563456-23454-23</isbn>
    37. </buch>
    38. <buch name="Krieg der Engel">
    39. <author>Wolfgang und Heike Hohlbein</author>
    40. <verlag />
    41. <isbn>423-4563456-23454-12</isbn>
    42. </buch>
    43. <buch name="Midgart">
    44. <author>Wolfgang und Heike Hohlbein</author>
    45. <verlag />
    46. <isbn>423-4563456-23454-65</isbn>
    47. </buch>
    48. <buch name="Apocalipse">
    49. <band>3</band>
    50. <bandname>Diamant</bandname>
    51. <author>Wolfgang und Heike Hohlbein</author>
    52. <verlag />
    53. <isbn>423-4563456-23454-23</isbn>
    54. </buch>
    55. <buch name="Apocalipse">
    56. <band>1</band>
    57. <bandname>Eis</bandname>
    58. <author>Wolfgang und Heike Hohlbein</author>
    59. <verlag />
    60. <isbn>423-4563456-23454-23</isbn>
    61. </buch>
    62. <buch name="Apocalipse">
    63. <band>2</band>
    64. <bandname>Stein</bandname>
    65. <author>Wolfgang und Heike Hohlbein</author>
    66. <verlag />
    67. <isbn>423-4563456-23454-23</isbn>
    68. </buch>
    69. </buchliste>
    70. </doc>


    XSD

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
    3. elementFormDefault="qualified"
    4. xmlns="http://tempuri.org/XMLSchema.xsd"
    5. xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
    6. xmlns:xs="http://www.w3.org/2001/XMLSchema"
    7. >
    8. <xs:element name="doc">
    9. <xs:complexType>
    10. <xs:sequence>
    11. <xs:element name="buchliste">
    12. <xs:complexType>
    13. <xs:sequence>
    14. <xs:element name="buch" minOccurs="0" maxOccurs="unbounded" type="buch"/>
    15. </xs:sequence>
    16. </xs:complexType>
    17. </xs:element>
    18. </xs:sequence>
    19. </xs:complexType>
    20. </xs:element>
    21. <xs:simpleType name="isbn">
    22. <xs:restriction base="xs:string">
    23. <xs:pattern value="[0-9]{3}\-[0-9]{7}\-[0-9]{5}\-[0-9]{2}" />
    24. </xs:restriction>
    25. </xs:simpleType>
    26. <!--complex type wäre buch-->
    27. <xs:complexType name="buch">
    28. <xs:sequence>
    29. <xs:element name="band" type="xs:integer" minOccurs="0"/>
    30. <xs:element name="bandname" type="xs:string" minOccurs="0"/>
    31. <xs:element name="author" type="xs:string"/>
    32. <xs:element name="verlag" type="xs:string"/>
    33. <xs:element name="isbn" type="isbn"/>
    34. </xs:sequence>
    35. <xs:attribute name="name" type="xs:string" />
    36. </xs:complexType>
    37. </xs:schema>


    XSLT

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    3. xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
    4. xmlns:foobar="http://tempuri.org/XMLSchema.xsd"
    5. >
    6. <!--<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    7. xmlns:msxsl="http://tempuri.org/XMLSchema.xsd" exclude-result-prefixes="msxsl"
    8. >-->
    9. <xsl:output method="html"/>
    10. <xsl:template match="/">
    11. <html>
    12. <body>
    13. <h1>Buchliste</h1>
    14. <br />
    15. <xsl:apply-templates/>
    16. </body>
    17. </html>
    18. </xsl:template>
    19. <xsl:template match="foobar:buchliste">
    20. <table border="1" width="100%">
    21. <tr bgcolor="#ff0000">
    22. <th width="20%">Author</th>
    23. <th width="20%">Name</th>
    24. <th width="20%">Untertitel</th>
    25. <th width="10%">Band-Nummer</th>
    26. <th width="15%">Verlag</th>
    27. <th>ISBN</th>
    28. </tr>
    29. <xsl:for-each select="foobar:buch">
    30. <xsl:sort select="foobar:author"/>
    31. <xsl:sort select="@name"/>
    32. <xsl:sort select="foobar:band"/>
    33. <tr bgcolor="#00ff00">
    34. <td>
    35. <xsl:value-of select="foobar:author"/>
    36. </td>
    37. <td>
    38. <xsl:value-of select="@name"/>
    39. </td>
    40. <td>
    41. <xsl:value-of select="foobar:bandname"/>
    42. </td>
    43. <td>
    44. <xsl:value-of select="foobar:band"/>
    45. </td>
    46. <td>
    47. <xsl:value-of select="foobar:verlag"/>
    48. </td>
    49. <td>
    50. <xsl:value-of select="foobar:isbn"/>
    51. </td>
    52. </tr>
    53. </xsl:for-each>
    54. </table>
    55. </xsl:template>
    56. </xsl:stylesheet>