Как объявить переменную как ссылку в XSLT - PullRequest
1 голос
/ 11 ноября 2010

Привет, есть ли здесь информация о том, как объявить ссылку (то есть: http://www.google.com) как переменную и затем использовать переменную для else если? Как-то так?

   <xsl:element name="a"> 
<xsl:attribute name="href">http://www.google.com</xsl:attribute>// first get the link
<xsl:choose>
<xsl:when test="http://www.google.com">
  Do something 1
</xsl:when>
<xsl:otherwise>
  Do something 2
</xsl:choose> 
</xsl:element>

Возможно ли это? Чтона что мне смотреть?

Ответы [ 4 ]

3 голосов
/ 11 ноября 2010

есть, как объявить ссылка (т.е.: http://www.google.com) как переменная, а затем с помощью переменной если еще?

Используйте этот код в качестве рабочего примера - конечно, вам необходимо изучить хотя бы основы XSLT:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vLink" select="'http://www.google.com'"/>

 <xsl:template match="/">
  <xsl:choose>
    <xsl:when test="$vLink = 'http://www.google.com'">
      It is the Google link...
    </xsl:when>
    <xsl:otherwise>
     It is not (exactly) the Google link...
    </xsl:otherwise>
  </xsl:choose>
 </xsl:template>
</xsl:stylesheet>

когда это преобразование применяется к любому документу XML (не используется), получается желаемый результат:

  It is the Google link...

Можно также использовать глобальный <xsl:param>. Это может быть установлено извне инициатором преобразования.

0 голосов
/ 13 ноября 2010

Если вам нужно более глобально, попробуйте это:

...
<xsl:apply-templates select="a" />
... 

<xsl:template match="a">
    Just a link
</xsl:template>

<xsl:template match="a[starts-with(@href, 'http://google.com/') or starts-with(@href, 'http://www.google.com/')]">
    Link to google.com
</xsl:template> 
0 голосов
/ 11 ноября 2010

В некоторой степени это возможно, но в XSL нет конструкции if-else.Вот версия, которую я протестировал и которую вы можете адаптировать к вашим потребностям.Входные данные, которые я использовал, были:

<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<xml>
    <LinkValue>http://www.google.com/</LinkValue>
</xml>

XSL, показывающий «Сделай что-нибудь 1», если LinkValue была строкой выше, или «Сделай что-нибудь 2», если я изменил это:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:variable name="LinkValue" select="//LinkValue"/>
        <xsl:element name="a">  
            <xsl:attribute name="href"><xsl:value-of select="$LinkValue"/></xsl:attribute>
            <xsl:if test="$LinkValue = 'http://www.google.com/'"> 
                Do something 1 
            </xsl:if> 
            <xsl:if test="$LinkValue != 'http://www.google.com/'"> 
                Do something 2 
            </xsl:if>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Надеюсь, вы сможете использовать эти примеры, чтобы точно определить, что вам нужно реализовать для вашего сценария.

0 голосов
/ 11 ноября 2010

Сопоставьте с контентом прямо и объявите URL как переменную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...