2010-04-01 11 views
30

Jak ustawić href, który jest zarówno linkiem do tekstu, jak i linkiem przez transformację XSLT? Oto co mam do tej pory, co daje mi błąd "xsl: value-of mogą nie być dzieckiem xsl: element tekstowy":Ustawienie wartości xsl: wartość-at na atrybut href i pole tekstowe łącza w XSLT

<xsl:element name="a"> 
    <xsl:attribute name="href"> 
     <xsl:value-of select="actionUrl"/> 
    </xsl:attribute> 
    <xsl:text><xsl:value-of select="actionUrl"/></xsl:text> 
</xsl:element> 

Odpowiedz

35

<xsl:text> definiuje sekcję tekstową w dokumencie XSL. W tym miejscu może być tylko prawdziwy, zwykły tekst, a nie węzły XML. Potrzebujesz tylko <xsl:value-of select="actionUrl"/>, który i tak wydrukuje tekst.

<xsl:element name="a"> 
    <xsl:attribute name="href"> 
     <xsl:value-of select="actionUrl"/> 
    </xsl:attribute> 
    <xsl:value-of select="actionUrl"/> 
</xsl:element> 
+0

Tylko uwaga, ważne wydaje się mianować href pierwszy, drugi i tekst na wyświetlaczu, jak masz zrobić. Miałem to na odwrót, którego nie udało się wyświetlić. –

+0

To jest nieporęczne i trudne do odczytania, sprawdź [odpowiedź lexicore] (http://stackoverflow.com/a/2563083/253468)! – TWiStErRob

4

Nie musisz element xsl:text:

<xsl:element name="a"> 
    <xsl:attribute name="href"> 
    <xsl:value-of select="actionUrl"/> 
    </xsl:attribute> 
    <xsl:value-of select="actionUrl"/> 
</xsl:element> 
26

Można również zrobić:

<a href="{actionUrl}"><xsl:value-of select="actionUrl"/></a> 
+0

Dzięki, Dimitre, literówka. Za dużo EL ostatnio. – lexicore

+1

W rzeczywistości actionurl nie jest zmienną - po prostu nazwa elementu. Dlatego na początku nazwy thete nie może zawierać znaku "$". –