ritschmanhard: Anker zu externer xml Datei

Hallo,

Ich habe mal wieder ein Problem, bei dem ich nicht weiter komme:

Ich habe eine xml Datei (name:content1.xml) der Gestalt (die ich an den Client ausliefere):

  
<document>  
  <product prId="nr1" bez="Produkt1a">bla1</product>  
  <product prId="nr2" bez="Produkt1b">bla2</product>  
  <product prId="nr3" bez="Produkt1c">bla3</product>  
</document>  

Dieses wird (clientseitig) transformiert mit

  
<xsl:template match="/">  
  <html>  
     <head><title>dummy</title></head>  
     <body>  
         <xsl:apply-templates/>  
     </body>  
  </html>  
</xsl:template>  
  
<xsl:template match="product">  
  <a>  
     <xsl:attribute name="href"><xsl:value-of select="./@prId"/></xsl:attribute>  
     <xsl:value-of select="./@bez"/>  
  </a>  
  <div><xsl:value-of select="."/></div>  
</xsl:template>  

Es entsteht also durch die Transformation (*):

  
<html>  
     <head><title>dummy</title></head>  
     <body>  
         <a href="nr1">Produkt1a</a>  
         <div>bla1</div>  
         <a href="nr2">Produkt1b</a>  
         <div>bla2</div>  
         <a href="nr3">Produkt1c</a>  
         <div>bla3</div>  
     </body>  
</html>  

Nun möchte ich gerne aus einem anderen Kontext (http://localhost/index.html) auf einen der entstandenen Anker verlinken.
Also index.html:

  
<html>  
     <head><title>dummy</title></head>  
     <body>  
         <a href="http://localhost/content.xml#nr1">Produkt1a</a>  
         <a href="http://localhost/content.xml#nr2">Produkt1b</a>  
        ...  
     </body>  
</html>  

Wäre (*) nicht aus einer Transformation entstanden, sondern direkt eine html Datei (mit dem Beispielnamen content1.html), so könnte ich den Anker anspringen mit http://localhost/content1.html#nr1.
Nun ist aber content1 ja eine xml Datei und der Link zu http://localhost/content1.xml#nr1 schlägt fehl (IE & FF sind sich da einig)

Gibt es eine Möglichkeit, diese Anker (extern!) anzuspringen?

Danke schon mal fürs Lesen,
Richard

  1. Hallo,

    Es entsteht also durch die Transformation (*):

    <a href="nr1">Produkt1a</a>

    
    >   
    > Nun möchte ich gerne aus einem anderen Kontext (http://localhost/index.html) auf einen der entstandenen Anker verlinken.  
      
    Ah? Welchen entstandenen Anker denn? Das sind Links, ja, aber keine Anker!  
      
    
    > Also index.html:  
    > ~~~html
      
    
    >          <a href="http://localhost/content.xml#nr2">Produkt1b</a>  
    > </html>  
    > 
    
    

    Wäre (*) nicht aus einer Transformation entstanden, sondern direkt eine html Datei (mit dem Beispielnamen content1.html), so könnte ich den Anker anspringen mit http://localhost/content1.html#nr1.

    Könntest du genau so wenig, genauergesagt: auf keinem Fall.
    Siehst du denn irgendwo ein id="nr2" oder name="nr2" ?
    Das wäre nämlich ein Anker und dann klappt es auch mit den Nachbarn.

    Grüße
    Thomas

      
    <a id="{./@prId}">  
    			<xsl:value-of select="./@bez"/>  
    		</a>  
    
    
    1. Hallo Thomas,

      Ich danke dir sehr - manchmal sieht man den Wald vor lauter Bäumen nicht - natürlich ist das name/id Attribut und nicht das href Attribut für den Ankernamen verantwortlich - ich könnt mich....

      Trotzdem gibt es jetzt ein "Folgeproblem":

      Gibt es eine CSS Eigenschaft, die durch das Anspringen des Ankers in Firefox 3 getriggert wird oder kann man den Firefox dazu bringen, z.B. :active auszulösen?
      Denn so, wie es aktuell ist, zeigt der IE 7 eine (CSS indizierte) Reaktion (:active) auf die Wahl des Ankers, wohingegen der Firefox nur versucht, an die Anker-Position zu scrollen (was nicht immer gelingt, wenn der nachfolgende Text zuwenig Höhe einnimmt um die Seite noch komplett zu befüllen).
      Man erkennt also im Firefox teilweise nicht, dass der Anker angesprungen wird.
      Gibt es hierfür eine CSS basierte Lösung oder müsste Javascript zum Einsatz kommen?

      Vielen Dank an dich,
      Richard

      1. Hallo,

        Gibt es eine CSS Eigenschaft, die durch das Anspringen des Ankers in Firefox 3 getriggert wird oder kann man den Firefox dazu bringen, z.B. :active auszulösen?

        a:target {
           ...
        }

        IE kann's nicht, FF, Opera und Safari können das.

        Grüße
        Thomas

        1. Hallo Thomas,

          Du hast mir mit deinen Tips heute echt den Tag gerettet - vielen Dank an dich und die Betreiber dieses großartigen Forums.

          Viele Grüße,
          Richard