DTD: Datum konvertieren?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • DTD: Datum konvertieren?

    Hallo.
    Ich habe hier eine XML und eine DTD Datei und versuche verzweifelt die daten mit einer XSLT zu filtern
    Daten einfach tabelarisch darstellen funktioniert wunder bar. aber sobald ich eine IF Funtkion einbauen will gehts nciht mehr. Denke es liegt an der falschen deklarierung des Datums in der DTD. Die frage ist nun wie komme ich darum, das ich doch nach datum filtern kann, sprich nur ein bestimmtes datum anzeigen kann.

    DTD:

    Quellcode

    1. <!-- w version="1_1" -->
    2. <!ELEMENT W.EVENTS ( EVENTLIST?, SINGLEEVENTLIST?, EVENTCATMAPLIST?, EVENTMEDIAMAPLIST?, TICKETLINKLIST?, LOCATIONLIST?, LOCATIONCATMAPLIST?, LOCATIONMEDIAMAPLIST?, MEDIALIST?, CITYLIST?, STATELIST?, COUNTRYLIST?, EVENTCATLIST?, LOCATIONCATLIST?, TICKETVENDORLIST? ) >
    3. <!ATTLIST W.EVENTS version CDATA #REQUIRED >
    4. <!ELEMENT EVENTLIST ( EVENT* ) >
    5. <!ELEMENT SINGLEEVENTLIST ( SINGLEEVENT* ) >
    6. <!ELEMENT EVENTCATMAPLIST ( EVENTCATMAP* ) >
    7. <!ELEMENT EVENTMEDIAMAPLIST ( EVENTMEDIAMAP* ) >
    8. <!ELEMENT TICKETLINKLIST ( TICKETLINK* ) >
    9. <!ELEMENT LOCATIONLIST ( LOCATION* ) >
    10. <!ELEMENT LOCATIONCATMAPLIST ( LOCATIONCATMAP* ) >
    11. <!ELEMENT LOCATIONMEDIAMAPLIST ( LOCATIONMEDIAMAP* ) >
    12. <!ELEMENT MEDIALIST ( MEDIA* ) >
    13. <!ELEMENT CITYLIST ( CITY* ) >
    14. <!ELEMENT STATELIST ( STATE* ) >
    15. <!ELEMENT COUNTRYLIST ( COUNTRY* ) >
    16. <!ELEMENT EVENTCATLIST ( EVENTCAT* ) >
    17. <!ELEMENT LOCATIONCATLIST ( LOCATIONCAT* ) >
    18. <!ELEMENT TICKETVENDORLIST ( TICKETVENDOR* ) >
    19. <!ELEMENT EVENT ( NAME?, EVENTGROUPID?, SHORTDESCRIPTION?, LOCATION?, RANKING?, STARTDATE?, ENDDATE?, STARTTIME?, ENDTIME?, ADMISSION?, SCHEDULE?, SCHEDULENOTE?, EXTRAINFO?, DESCRIPTION?, PARTICIPANTS?, TIP?, INFOSERVICE?, INFOPHONE?, INFOPHONE2?, INFOFAX?, INFOFAX2?, INFOURL?, INFOURL2?, INFOMAIL?, INFOMAIL2? ) >
    20. <!ATTLIST EVENT id CDATA #REQUIRED >
    21. <!ELEMENT SINGLEEVENT ( EVENT?, STARTDATE?, ENDDATE?, STARTTIME?, ENDTIME? ) >
    22. <!ATTLIST SINGLEEVENT id CDATA #REQUIRED >
    23. <!ELEMENT EVENTCATMAP ( EVENTID?, EVENTCATID? ) >
    24. <!ELEMENT EVENTMEDIAMAP ( EVENTID?, MEDIAID? ) >
    25. <!ELEMENT TICKETLINK ( SINGLEEVENT?, TICKETVENDOR?, TICKETVENDORDATA? ) >
    26. <!ATTLIST TICKETLINK id CDATA #REQUIRED >
    27. <!ELEMENT LOCATION ( NAME?, STREET?, ZIP?, CITY?, INFOSERVICE?, INFOPHONE?, INFOPHONE2?, INFOFAX?, INFOFAX2?, INFOURL?, INFOURL2?, INFOMAIL?, INFOMAIL2?, REACHABLEBYCAR?, PUBLICTRANSPORT?, HOWTOARRIVE?, DESCRIPTION?, REGULAROPENINGHOURS?, WGS84_GEOX?, WGS84_GEOY? ) >
    28. <!ATTLIST LOCATION id CDATA #REQUIRED >
    29. <!ELEMENT LOCATIONCATMAP ( LOCATIONID?, LOCATIONCATID? ) >
    30. <!ELEMENT LOCATIONMEDIAMAP ( LOCATIONID?, MEDIAID? ) >
    31. <!ELEMENT MEDIA ( INTERNALNAME?, URL?, COPYRIGHT?, WIDTH?, HEIGHT? ) >
    32. <!ATTLIST MEDIA id CDATA #REQUIRED >
    33. <!ELEMENT CITY ( NAME?, DISTRICT?, STATE?, COUNTRY?, METROPOLE?, TOURISTCENTRE?, CAPITAL? ) >
    34. <!ATTLIST CITY id CDATA #REQUIRED >
    35. <!ELEMENT STATE ( STATENAME? ) >
    36. <!ATTLIST STATE id CDATA #REQUIRED >
    37. <!ELEMENT COUNTRY ( NAME? ) >
    38. <!ATTLIST COUNTRY id CDATA #REQUIRED >
    39. <!ELEMENT EVENTCAT ( NAME?, PARENTCAT? ) >
    40. <!ATTLIST EVENTCAT id CDATA #REQUIRED >
    41. <!ELEMENT LOCATIONCAT ( NAME?, PARENTCAT? ) >
    42. <!ATTLIST LOCATIONCAT id CDATA #REQUIRED >
    43. <!ELEMENT TICKETVENDOR ( NAME? ) >
    44. <!ATTLIST TICKETVENDOR id CDATA #REQUIRED >
    45. <!ELEMENT NAME ( #PCDATA ) >
    46. <!ELEMENT EVENTGROUPID ( #PCDATA ) >
    47. <!ELEMENT SHORTDESCRIPTION ( #PCDATA ) >
    48. <!ELEMENT RANKING ( #PCDATA ) >
    49. <!ELEMENT STARTDATE ( #PCDATA ) >
    50. <!ELEMENT ENDDATE ( #PCDATA ) >
    51. <!ELEMENT STARTTIME ( #PCDATA ) >
    52. <!ELEMENT ENDTIME ( #PCDATA ) >
    53. <!ELEMENT ADMISSION ( #PCDATA ) >
    54. <!ELEMENT SCHEDULE ( #PCDATA ) >
    55. <!ELEMENT SCHEDULENOTE ( #PCDATA ) >
    56. <!ELEMENT EXTRAINFO ( #PCDATA ) >
    57. <!ELEMENT DESCRIPTION ( #PCDATA ) >
    58. <!ELEMENT PARTICIPANTS ( #PCDATA ) >
    59. <!ELEMENT TIP ( #PCDATA ) >
    60. <!ELEMENT INFOSERVICE ( #PCDATA ) >
    61. <!ELEMENT INFOPHONE ( #PCDATA ) >
    62. <!ELEMENT INFOPHONE2 ( #PCDATA ) >
    63. <!ELEMENT INFOFAX ( #PCDATA ) >
    64. <!ELEMENT INFOFAX2 ( #PCDATA ) >
    65. <!ELEMENT INFOURL ( #PCDATA ) >
    66. <!ELEMENT INFOURL2 ( #PCDATA ) >
    67. <!ELEMENT INFOMAIL ( #PCDATA ) >
    68. <!ELEMENT INFOMAIL2 ( #PCDATA ) >
    69. <!ELEMENT EVENTID ( #PCDATA ) >
    70. <!ELEMENT EVENTCATID ( #PCDATA ) >
    71. <!ELEMENT MEDIAID ( #PCDATA ) >
    72. <!ELEMENT TICKETVENDORDATA ( #PCDATA ) >
    73. <!ELEMENT STREET ( #PCDATA ) >
    74. <!ELEMENT ZIP ( #PCDATA ) >
    75. <!ELEMENT REACHABLEBYCAR ( #PCDATA ) >
    76. <!ELEMENT PUBLICTRANSPORT ( #PCDATA ) >
    77. <!ELEMENT HOWTOARRIVE ( #PCDATA ) >
    78. <!ELEMENT REGULAROPENINGHOURS ( #PCDATA ) >
    79. <!ELEMENT WGS84_GEOX ( #PCDATA ) >
    80. <!ELEMENT WGS84_GEOY ( #PCDATA ) >
    81. <!ELEMENT LOCATIONID ( #PCDATA ) >
    82. <!ELEMENT LOCATIONCATID ( #PCDATA ) >
    83. <!ELEMENT INTERNALNAME ( #PCDATA ) >
    84. <!ELEMENT URL ( #PCDATA ) >
    85. <!ELEMENT COPYRIGHT ( #PCDATA ) >
    86. <!ELEMENT WIDTH ( #PCDATA ) >
    87. <!ELEMENT HEIGHT ( #PCDATA ) >
    88. <!ELEMENT DISTRICT ( #PCDATA ) >
    89. <!ELEMENT METROPOLE ( #PCDATA ) >
    90. <!ELEMENT TOURISTCENTRE ( #PCDATA ) >
    91. <!ELEMENT CAPITAL ( #PCDATA ) >
    92. <!ELEMENT STATENAME ( #PCDATA ) >
    93. <!ELEMENT PARENTCAT ( #PCDATA ) >
    94. <!ATTLIST PARENTCAT id CDATA #REQUIRED >
    Alles anzeigen


    XML:

    Quellcode

    1. <?xml version="1.0" encoding="iso-8859-1"?>
    2. <!DOCTYPE W.EVENTS SYSTEM "w1_1_b_events.dtd">
    3. <?w version="1_1"?>
    4. <W.EVENTS version="1_1">
    5. <EVENTLIST>
    6. <EVENT id="699289">
    7. <NAME>Marshall &amp; Alexander</NAME>
    8. <EVENTGROUPID>699220</EVENTGROUPID>
    9. <SHORTDESCRIPTION>Kein Jahr vergeht ohne dieses Erfolgsduo, das von klassischen Stücken über eigene Kompositionen bis hin zu Covers von Jazz-, Rock- und Popsongs die perfekte Mischung gefunden hat. Seit mehr als zehn Jahren füllen Marshall &amp; Alexander so die Konzertsäle.</SHORTDESCRIPTION>
    10. <LOCATION id="2058" />
    11. <RANKING>5</RANKING>
    12. <STARTDATE>29.04.2007</STARTDATE>
    13. <ENDDATE>29.04.2007</ENDDATE>
    14. <STARTTIME>20.00</STARTTIME>
    15. <ENDTIME>20.00</ENDTIME>
    16. <TIP>2</TIP>
    17. <INFOPHONE>09 21/7 46 00-0</INFOPHONE>
    18. <INFOFAX>09 21/7 46 00-50</INFOFAX>
    19. <INFOURL>www.semmel.de</INFOURL>
    20. <INFOMAIL>info@semmel.de</INFOMAIL>
    21. </EVENT>
    Alles anzeigen


    XLST:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    3. <xsl:output version="1.0" method="html" indent="no" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
    4. <xsl:param name="SV_OutputFormat" select="'HTML'"/>
    5. <xsl:variable name="XML" select="/"/>
    6. <xsl:param name="USER1"/>
    7. <xsl:template match="/">
    8. <xsl:variable name="USER1" select="document($USER1)"/>
    9. <html>
    10. <head>
    11. <title/>
    12. </head>
    13. <body>
    14. <xsl:for-each select="$XML">
    15. <xsl:for-each select="W.EVENTS">
    16. <xsl:for-each select="CITYLIST">
    17. <xsl:for-each select="CITY">
    18. <xsl:for-each select="NAME">
    19. <xsl:apply-templates/>
    20. </xsl:for-each>
    21. </xsl:for-each>
    22. </xsl:for-each>
    23. </xsl:for-each>
    24. <xsl:for-each select="W.EVENTS">
    25. <xsl:for-each select="EVENTLIST">
    26. <xsl:for-each select="EVENT">
    27. <table border="1" width="100%">
    28. <tbody>
    29. <tr>
    30. <td>
    31. <xsl:for-each select="STARTDATE">
    32. <xsl:apply-templates/>
    33. </xsl:for-each>
    34. </td>
    35. <td/>
    36. <td/>
    37. </tr>
    38. <tr>
    39. <td>
    40. <xsl:for-each select="DESCRIPTION">
    41. <xsl:apply-templates/>
    42. </xsl:for-each>
    43. </td>
    44. <td>
    45. <xsl:for-each select="NAME">
    46. <xsl:apply-templates/>
    47. </xsl:for-each>
    48. </td>
    49. <td/>
    50. </tr>
    51. <tr>
    52. <td>
    53. <xsl:for-each select="INFOURL">
    54. <xsl:apply-templates/>
    55. </xsl:for-each>
    56. </td>
    57. <td/>
    58. <td/>
    59. </tr>
    60. </tbody>
    61. </table>
    62. </xsl:for-each>
    63. </xsl:for-each>
    64. <xsl:for-each select="EVENTLIST">
    65. <xsl:for-each select="EVENT"/>
    66. </xsl:for-each>
    67. </xsl:for-each>
    68. </xsl:for-each>
    69. </body>
    70. </html>
    71. </xsl:template>
    72. </xsl:stylesheet>
    Alles anzeigen
  • Hi,

    bitte erläutere dein Problem noch etwas genauer. Wo willst du denn ein IF einbauen?
    An der Datums Deklaration in der DTD kanm man ja nichts falsch machen, da es nur PCDATA gibt. Außerdem hat die DTD keinen Einfluss auf die Stylesheet Transformation.

    Ich hab deine Files nicht ausprobiert aber mich wundert wirklich, dass es funktionieren soll. In deinem Stylesheet verwendest du gerademal ein template-match. Dann bringt dir der Aufruf von <xsl:apply-templates/> eigentlich auch nichts.
  • Aaaalso :-)

    Ich habe ein XML file, welches Events enthält.
    Jedes Event hat ein datum. ich bekomme die ausgabe hin, das alle daten ausgegeben werden, jetzt möchte ich aber durch ein xslt hinbekommen, das nur die einträge raus gegeben werden, welche dem datum x entsprechen.

    das beispiel xlst ist ganz rudimentär, nur zur veranschaulichung, was ich bisher gemacht habe...

    sorry bin blutiger anfänger in der beziehung