2012-02-27 4 views
1

im делает быстрое обновление для сайта, но xslt не является моей вещью и, похоже, не работает с кодом кода i, смотрящим на сгенерированный источник - включил оба ниже:xml xsl шаблон с html/js внутри сбой

текущий код:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]> 
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxml="urn:schemas-microsoft-com:xslt" 
    xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:tagsLib="urn:tagsLib" 
    exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets tagsLib "> 


<xsl:output method="xml" omit-xml-declaration="yes"/> 

<xsl:param name="currentPage"/> 

<xsl:template match="/"> 

<xsl:if test="string-length($currentPage/mp4videoLinkId) > 0"> 
    <xsl:variable name="videoID" select="$currentPage/mp4videoLinkId" /> 
    <xsl:variable name="srtID" select="$currentPage/mp4videoSRTId" /> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script src="flowplayer-3.2.6.min.js"></script> 
    <script src="flowplayer.ipad-3.2.2.min.js"></script> 

    <!-- player container--> 
    <a href="{$videoID}" style="display:block;width:473px;height:310px;" id="ipad"></a> 

    <script type="text/javascript"> 
    $f("ipad", "flowplayer-3.2.7.swf",{ 
    clip: { 
     autoPlay: false, 
     url: '{$videoID}', 

     // this is the Timed Text file with captions info 
     captionUrl: '{$srtID}' 
    }, 
    plugins: { 

     captions: { 
     url: 'flowplayer.captions-3.2.3.swf', 

     // pointer to a content plugin (see below) 
     captionTarget: 'content' 
     }, 

     // configure a content plugin to look good for our purpose 
     content: { 
     url:'flowplayer.content-3.2.0.swf', 
     bottom: 25, 
     width: '80%', 
     height:40, 
     backgroundColor: 'transparent', 
     backgroundGradient: 'none', 
     borderRadius: 4, 
     border: 0, 
     textDecoration: 'outline', 
     style: { 
      body: { 
      fontSize: 14, 
      fontFamily: 'Arial', 
      textAlign: 'center', 
      color: '#ffffff' 
      } 
     } 
     } 
    } 
    }).ipad(); 
    </script> 
</xsl:if> 

</xsl:template> 

</xsl:stylesheet> 

генерироваться источник: (как вы можете видеть, что это нарушение код и не закрываем, а затем показывая {$ теги}) что мне не хватает?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" /><script src="flowplayer-3.2.6.min.js" /><script src="flowplayer.ipad-3.2.2.min.js" /><a href="mp4/assist-mi-car-parking.mp4" style="display:block;width:473px;height:310px;" id="ipad" /><script type="text/javascript"> 
    $f("ipad", "flowplayer-3.2.7.swf",{ 
    clip: { 
     autoPlay: false, 
     url: '{$videoID}', 

     // this is the Timed Text file with captions info 
     captionUrl: '{$srtID}' 
    }, 
    plugins: { 

     captions: { 
     url: 'flowplayer.captions-3.2.3.swf', 

     // pointer to a content plugin (see below) 
     captionTarget: 'content' 
     }, 

     // configure a content plugin to look good for our purpose 
     content: { 
     url:'flowplayer.content-3.2.0.swf', 
     bottom: 25, 
     width: '80%', 
     height:40, 
     backgroundColor: 'transparent', 
     backgroundGradient: 'none', 
     borderRadius: 4, 
     border: 0, 
     textDecoration: 'outline', 
     style: { 
      body: { 
      fontSize: 14, 
      fontFamily: 'Arial', 
      textAlign: 'center', 
      color: '#ffffff' 
      } 
     } 
     } 
    } 
    }).ipad(); 
    </script> 

ответ

0

АВТ (Attribute Value Template) convention in XSLT определяется только для значений атрибутов - как имя этой функции ясно говорит.

Выражения внутри фигурных скобок, которые являются частью текстового узла не оцениваются. Нужно использовать инструкцию <xsl:value-of>.

Решение:

Заменить:

url: '{$videoID}', 

с:

url: '<xsl:value-of select="$videoID"/>', 

Аналогичным образом замените:

captionUrl: '{$srtID}' 

с:

captionUrl: '<xsl:value-of select="$srtID"/>' 
+0

велика, что теперь показывает данные! однако он по-прежнему включает только jquery и ничего после того, как он смотрит в firebug, и в исходном тексте его не закрывает, и я думаю, что предотвращение останова показывается ..... –

+0

@JamesBrandon: трансформация XSLT может иметь дополнительные ошибки - вам нужно показать полную (но как можно меньшую, чтобы воспроизвести проблему) XML-документ, полную (как можно меньшую, но воспроизводящую проблему) преобразование XSLT, полный результат, который вы получаете, полный результат, который вы * хотите * чтобы получить и любые правила, которые должно выполнить преобразование. Что касается этого вопроса, на него полностью ответили. Пожалуйста, задайте новый вопрос по остальным проблемам и предоставьте всю необходимую информацию для воспроизведения этой новой проблемы. –

Смежные вопросы