2012-02-06 2 views
1

Я использовал следующий код в моем XSL:XSL HREF не работает в хроме

<xsl:variable name="link" select="normalize-space(concat('#',$chapter2))/> 

<a href="{$link}">Next chapter</a> 

Он должен перейти к главе 2 позиции по щелчку следующей главы ссылки. Не переходите к главе 2 в chrome и firefox. Когда я наводил ссылку на ссылку, я обнаружил, что в chrome и firefox после '#' добавляются дополнительные символы, например # 14678776e_chapter2.

Как исправить эту проблему.

$ chapter2 позиция() значение Код:

<xsl:variable name=chapter2 select="position()"/> 

Код для XSL:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
     xmlns:xsl="w3.org/1999/XSL/Transform"; 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     exclude-result-prefixes="msxsl"> 

    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="/"> 
     <xsl:variable name="chapter" select="position()"/> 
     <xsl:variable name="link" select="concat('#',$chapter)"/> 
     <a href="{$link}" title="{$link}"> 
      <xsl:value-of select="$link"/> 
     </a> 
    </xsl:template> 

</xsl:stylesheet> 

Там нет входного XML на данный момент. Приведенный выше код может быть запущен непосредственно

Спасибо, Сэм

+0

Попробуйте 'Next chapter'. Когда подсказка подсказки говорит «14678776e_chapter2» (как бы это было так), проверьте, как создается '$ chapter2'. – Tomalak

+0

Да, пожалуйста, предоставьте нам подробную информацию о том, как создается $ chapter2, и мы можем помочь вам в дальнейшем. – samjudson

+0

@Tomalak - Совет мыши указывает имя главы 2, но в строке состояния отображается 14678776e_chapter2 – sam

ответ

0

Название «chapter2» должен быть заключен в кавычки:

<xsl:variable name=chapter2 select="position()"/> 

Кроме того, убедитесь, что шаблон, который определяет chapter2 не то же самое, что определяет главу 1, иначе привязка к переменной главы 1 будет теневой привязкой к переменной главы2, поскольку оба будут равны результату функции position. Этот код работает нормально:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="pitarget.xml"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" 
       > 
<xsl:variable name="gal" select="'howdy'"/> 
<?var gal?><!--howdy--> 
<?echo gal?> 
<?html5 ?> 

<xsl:output method="html" encoding="utf-8" version="" indent="yes" standalone="no" media-type="text/html" omit-xml-declaration="no" doctype-system="about:legacy-compat" /> 

<xsl:template match="xsl:stylesheet"> 
    <xsl:apply-templates select="processing-instruction()"/> 
</xsl:template> 

<xsl:template match="/"> 
    <xsl:variable name="chapter" select="position()"/> 
    <xsl:variable name="link" select="concat('#',$chapter)"/> 
    <xsl:value-of select="processing-instruction('html5')"/> 
    <a href="{$link}" title="{$link}"><xsl:value-of select="$link"/></a> 
    <html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    </head> 
    <body> 
     <xsl:apply-templates/> 
    </body> 
    </html> 
</xsl:template> 


<xsl:template match="processing-instruction('echo')"> 
    <xsl:variable name="chapter2" select="position()"/> 
    <xsl:variable name="link" select="normalize-space(concat('#',$chapter2))"/> 
    <a href="{$link}">Next chapter</a> 
    <xsl:value-of select="//xsl:variable/@select[../@name=current()]"/> 
    <xsl:value-of select="count(document('pitarget.xml')//*) - 1"/> 
</xsl:template> 

<xsl:template match="processing-instruction('var')"> 
    <xsl:processing-instruction name="{.}"> 
    <xsl:value-of select="."/> 
    <xsl:value-of select="./following-sibling::node()"/> 
    </xsl:processing-instruction> 
</xsl:template> 

</xsl:stylesheet>