Xml XSL文件中嵌入的Youtube视频

Xml XSL文件中嵌入的Youtube视频,xml,xslt,xslt-1.0,xslt-2.0,Xml,Xslt,Xslt 1.0,Xslt 2.0,所以我有一个XSL文件,我希望有一个嵌入的youtube视频可以在同一页面上显示和播放,而不用带我去youtube。我有嵌入的代码,我试着使用 [注意:我已经为每个参数输入了我的值] <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="

所以我有一个XSL文件,我希望有一个嵌入的youtube视频可以在同一页面上显示和播放,而不用带我去youtube。我有嵌入的代码,我试着使用
[注意:我已经为每个参数输入了我的值]

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" encoding="UTF-8"/>
    <xsl:param name="contextPath">CONTEXT_PATH/</xsl:param>
    <xsl:include href="xhtml.xsl"/>
  <xsl:variable name="site" select="/home/tree/path/node[2]/@name"/>
    <xsl:template match="home">
        <xsl:element name="div">
            <xsl:attribute name="id">content-type</xsl:attribute>
            <xsl:attribute name="class">home</xsl:attribute>

          <xsl:choose>
           <xsl:when test="$site='Chameleon'">
            <xsl:call-template name="video-media">
                <xsl:with-param name="width" select="640"/>
                <xsl:with-param name="height" select="348"/>
                <xsl:with-param name="element" select="video-url"/>
            </xsl:call-template>



            <xsl:template name="video-media">
                <xsl:param name="element" select="video-url" />
                <xsl:param name="width" select="640"/>
                <xsl:param name="height" select="348"/>
                <xsl:param name="color" select="'ffffff'"/>
                <xsl:param name="title" select="'0'"/>
                <xsl:param name="byline" select="'0'"/>
                <xsl:param name="portrait" select="'0'"/>
                <xsl:param name="frameborder" select="'0'"/>
                <xsl:param name="video-id">
                    <xsl:choose>
                        <xsl:when test="contains($element,'youtube.com/watch?v=Bctaf7alxpE')">
                            <xsl:value-of select="substring-after($element,'youtube.com/watch?v=Bctaf7alxpE')"/>
                        </xsl:when>
                        <xsl:when test="contains($element,'youtube.com/v/Bctaf7alxpE')">
                            <xsl:value-of select="substring-after($element,'youtube.com/v/Bctaf7alxpE')"/>
                        </xsl:when>
                        <xsl:when test="contains($element,'youtu.be/Bctaf7alxpE')">
                            <xsl:value-of select="substring-after($element,'youtube.com/watch?v=Bctaf7alxpE')"/>
                        </xsl:when>
                    </xsl:choose>
                </xsl:param>

                <div class="video-container">
                    <xsl:choose>
                        <xsl:when test="contains($element,'youtube.com') or contains($element, 'youtu.be')">
                            <iframe class="youtube-player" type="text/html" width="560" height="315" src="http://www.youtube.com/embed/Bctaf7alxpE" frameborder="0">
                                <xsl:comment> You Tube Player </xsl:comment>
                            </iframe>
                        </xsl:when>
                    </xsl:choose>
                </div>
            </xsl:template>
        </xsl:when>

       <xsl:when test="$site='anotherSite'">
        <!-- Does Something Different here... -->
       </xsl:when>

       <xsl:otherwise>
        <!-- Perform a default action here .... -->
       </xsl:otherwise>
      </xsl:choose>

     </xsl:element>
    </xsl:template>
   </xsl:stylesheet>
[我的申请日志]

2014-09-11 17:28:41731警告com。[我的应用程序/项目树]-缺少参数,因此无法查找页面


我并不是真的担心日志,但我得到一个空值这一事实确实令人沮丧,因为我为每个参数都指定了一个值。

如果没有看到您的问题的完整的、最小的示例,很难说清楚,但是考虑到您发布的XSLT片段,这里有几种可能性:

  • 确保
    xsl:call-template
    不是
    xsl:stylesheet
    。也许你在你的原始代码中就有它, 但考虑到代码片段的发布方式,还不清楚 这个问题
  • 不能同时具有
    @select
    属性和子元素 (
    xsl:choose
    )作为
    video id
    参数
  • 这两个错误中的任何一个都可能导致XSLT编译失败

    按操作更新XSLT代码的编辑: 新发布的代码中有更多基本错误:

  • 应该是
    。(顺便说一句,
    ..
    可以简化为
    ..
  • 必须 移动为
    xsl:stylesheet
    的子级
  • 解决它

    模板必须是
    的子级。但是,在另一个名为
    的模板中,我想调用
    模板,以允许嵌入的视频在
    模板中播放 这是通过以下代码实现的:
    ,给定
    @选择中的参数值


    谢谢你的帮助

    你是说“xsl:call-template”应该在xsl:stylesheet之前调用@kjhughesI会注意到,根据显示的片段,模板“video media”被称为“width”、“height”和“element”,仅此而已。其余的参数没有传入。不,
    xsl:stylesheet
    是根元素;没有元素出现在它之前或之后。我的意思是
    xsl:call-template
    应该放在另一个命名或匹配的模板中(例如
    这里
    )。@KevinBrown我还试图注释掉
    中没有调用的其他无关参数,但是我仍然得到错误,它缺少一些参数。我改进了编辑,并添加了比前一个片段更清晰的内容。不要担心另一个
    从基本错误到基本错误的颠簸最好通过查看介绍性XSLT材料来消除;这将是我最后一次回答这个问题。谢谢
    
    java.lang.NullPointerException
    ERROR:  'null'
    FATAL ERROR:  'Could not compile stylesheet'