Raucherkrebs: 2 XML Dateien mit einer XSLT konvertieren möglich?

Warum wird das Menü nicht eingebunden ?

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
        <head>
            <title>Terms</title>
            <link rel="stylesheet" href="/style/style_xml.css" type="text/css" />
            <link rel="icon" type="image/ico" href="/favicon.ico" />
        </head>
        <body>
            <div class="menu"><xsl:value-of select="document('/xml/documents/menu.xml')/menu/menuitem" /></div>
            <div style="width: 70%; float: right;">
                <xsl:apply-templates />
            </div>

</body>
    </html>
</xsl:template>

<!--
<xsl:template match="/menu/menuitem">
    <h1><xsl:value-of select="." />Menu where are you? </h1>
</xsl:template>
-->

<xsl:template match="title">
    <h1><xsl:value-of select="." /></h1>
</xsl:template>

<xsl:template match="section">
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="section">
    <h2><xsl:value-of select="@name" /></h2>
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="p">
   <p><xsl:value-of select="." /></p>
</xsl:template>

</xsl:stylesheet>

  1. ---> Hallo, <---

    Warum wird das Menü nicht eingebunden ?

    Weil du es nicht einbindest.

    <div class="menu"><xsl:value-of select="document('/xml/documents/menu.xml')/menu/menuitem" /></div>
    <div style="width: 70%; float: right;">
      <xsl:apply-templates select="document('/xml/documents/menu.xml')/menu/menuitem" />
    </div>

    <xsl:template match="menu/menuitem">
        <h1><xsl:value-of select="." />Menu where are you? </h1>
    </xsl:template

    ---> Grüße
    Thomas <---

    1. Hallo,

      das menu ist nun da, leider sind nun die Terms weg.

      <?xml version="1.0" encoding="utf-8" ?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:template match="/">
          <html>
              <head>
                  <title>Terms</title>
                  <link rel="stylesheet" href="/style/style_xml.css" type="text/css" />
                  <link rel="icon" type="image/ico" href="/favicon.ico" />
              </head>
              <body>
                  <div class="menu"><xsl:value-of select="document('/xml/documents/menu.xml')/menu" /></div>
                  <div style="width: 70%; float: right;">
                  <xsl:apply-templates select="document('/xml/documents/menu.xml')/menu" />
                  </div>
              </body>
          </html>
      </xsl:template>

      <xsl:template match="menu">
          <h1><xsl:value-of select="." />Menu where are you?</h1>
      </xsl:template>

      <xsl:template match="title">
          <h1><xsl:value-of select="." /></h1>
      </xsl:template>

      <xsl:template match="section">
          <xsl:apply-templates />
      </xsl:template>

      <xsl:template match="section">
          <h2><xsl:value-of select="@name" /></h2>
          <xsl:apply-templates />
      </xsl:template>

      <xsl:template match="p">
         <p><xsl:value-of select="." /></p>
      </xsl:template>

      </xsl:stylesheet>

      1. Hallo,

        Hallo ;-)

        das menu ist nun da, leider sind nun die Terms weg.

        Was meinst du mit "Terms"?

        Du musst in den Templates wo du es brauchst entsprechend mit 'apply-templates' arbeiten.

        <div class="menu"><xsl:value-of select="document('/xml/documents/menu.xml')/menu" /></div>
                    <div style="width: 70%; float: right;">
                    <xsl:apply-templates select="document('/xml/documents/menu.xml')/menu" />

        Wenn 'menu' in deinem XML-Datei das oberste Element ist, wird das 'value-of' nichts bringen bzw. den gesamten Text der Datei ausgeben.

        document() gibt dir den Wurzelknoten der XML-Datei zurück, das ist ein 'immaginärer' Knoten, also "/", ab da muss du immer vom Wurzelelement (oberstes Element in der Datei) an selektieren.

        Um das zu vereinfachen kannst du das document() in einer Variable packen:

        <xsl:variable name="menuedatei" select="document('/xml/documents/menu.xml')" />
        <xsl:value-of select="$menuedatei/menu" />

        Grüße
        Thomas

        1. Hallo Thomas,

          also es gibt momentan 3 Dateien. Ich schreibe es mal in die Pastebin. Dann ist es übersichtlicher.

          1. Allgemeine Geschäftsbedingungen(agb.xml) http://pastebin.com/231629

          2. Menü: http://pastebin.com/231628

          3. DTD: http://pastebin.com/231630

          4. XSLT: http://pastebin.com/231632

          Ich möchte nun zwei DIVs nebeneinander haben. Das Linke ist 30% der Breite des Bildschirmes. Darin ist das Menü. Rechts daneben das andere. Darin die gesamten XML Daten.

          Ich suche schons seit Tagen ein Tutorial, das beschreibt wie man aus 2 XML Dateien durch XSLT eine html Datei erstellen kann. Vergeblich.
          Ich hätte einen Mörderlerneffekt, wenn du mir die korrekte XSLT Datei mal geben könntest, dann könnte ich die anylysieren.

          1. Hallo,

            also es gibt momentan 3 Dateien. Ich schreibe es mal in die Pastebin. Dann ist es übersichtlicher.

            In der Tat http://www.meta-text.net/etc/raucherkxml.gif ;-)

            Ich suche schons seit Tagen ein Tutorial, das beschreibt wie man aus 2 XML Dateien durch XSLT eine html Datei erstellen kann. Vergeblich.
            Ich hätte einen Mörderlerneffekt, wenn du mir die korrekte XSLT Datei mal geben könntest, dann könnte ich die anylysieren.

            Wenn deine XML-Datien nicht ellenlang sind, poste sie hier bitte (oder bitte nur als Ausnahme zu verstehen: mail mir sie zu)

            Grüße
            Thomas