Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT使用ColdFusion在URL中传递两个参数_Xml_Xslt_Coldfusion_Parameters_Hyperlink - Fatal编程技术网

Xml XSLT使用ColdFusion在URL中传递两个参数

Xml XSLT使用ColdFusion在URL中传递两个参数,xml,xslt,coldfusion,parameters,hyperlink,Xml,Xslt,Coldfusion,Parameters,Hyperlink,我试图使用ColdFusion通过XSLT文件中的URL传递两个参数 这是我的XSLT代码: <xsl:template match="/"> <xsl:text>Actors: </xsl:text> <xsl:apply-templates select="/movies/movie/actors/actor/name"/> </xsl:template> <xsl:template match="name"

我试图使用ColdFusion通过XSLT文件中的URL传递两个参数

这是我的XSLT代码:

<xsl:template match="/">
    <xsl:text>Actors: </xsl:text>
    <xsl:apply-templates select="/movies/movie/actors/actor/name"/>
</xsl:template>

<xsl:template match="name">
      <xsl:element name="a">
          <xsl:attribute name="href">actor_details.cfm?movieID=<xsl:value-of select="../../../@movieID"/>&amp;actorID=<xsl:value-of select="../@actorID"/></xsl:attribute>
          <xsl:value-of select="." />
      </xsl:element>
      <xsl:element name="br" />
</xsl:template>
这是我的actor_details.cfm文件

<cfset MyXmlFile = Expandpath("test.xml")>
<cffile action="READ" variable="xmlInput"  file="#MyXmlFile#">
<cfset MyXslFile = Expandpath("actor_details.xsl")>
<cffile action="READ" variable="xslInput"  file="#MyXslFile#">

<cfset xslParam = StructNew() >
<cfset xslParam["movieID"] = "#url.movieID#" >

<cfset xmlOutput = XMLTransform(xmlInput, xslInput, xslParam )>
<!--- data is output --->
<cfcontent type="text/html" reset="yes">
<cfoutput>#xmloutput#</cfoutput>
这是我的actor_details.xsl文件

<xsl:param name="movieID"/>

<xsl:template match="/">
    <title>Actor details</title>
    <xsl:apply-templates select="/movies/movie[@movieID=$movieID]/actors/actor[@actorID=$actorID]"/>
</xsl:template>

<xsl:template match="actor">
    <xsl:text>Name: </xsl:text>
    <xsl:value-of select="name"/>
    <xsl:element name="br"/>
    <xsl:text>Age: </xsl:text>
    <xsl:value-of select="age"/>
    <xsl:element name="br"/>
</xsl:template>
因此,根据通过URL传递的movieID和actorID,actor_details页面应该显示演员的姓名和年龄。我对ColdFusion非常陌生,我不知道如何使用ColdFusion接收通过URL传递的参数。我在actor_details.cfm页面上遇到意外错误

我认为问题出在actor_details.cfm页面的某个地方,但我就是搞不清楚它是什么

我的XML文件:

<movie movieID="1">
    <actors>
        <actor actorID="1"> 
            <name>Bob</name>
            <age>23</age>
        </actor>

        <actor actorID="2"> 
            <name>Jack</name> 
            <age>25</age>
        </actor>

        <actor actorID="3"> 
            <name>James</name>
            <age>38</age>
        </actor>
    </actors>   
</movie>

<movie movieID="2">
    <actors>
        <actor actorID="1"> 
            <name>Mike</name>
            <age>19</age>
        </actor>

        <actor actorID="2"> 
            <name>Daniel</name>
            <age>29</age>
        </actor>

        <actor actorID="3"> 
            <name>Phil</name> 
            <age>41</age>
        </actor>
    </actors>   
</movie>

回答您关于URL变量的问题。URL是CF的变量范围之一,可通过以下方式访问:

 <cfset myvar = #URL.actorid# >
当然,您不必使用右边的标志,但因为您刚刚学习,这是识别CF VAR的一个好方法


这里有一个指向CF 9文档和CF内置的链接。

我已通过添加到我的CFM文件和XSL文件解决了这个问题。

在您的操作页面上执行一个操作。好的,我已经完成了,它将为第一个参与者显示struct actorID 1,MovieID 1。如果我单击其他名称,它会根据它们的actorID和movieID正确显示struct。所以,它似乎是工作,但我仍然得到意想不到的错误下面。我不知道为什么。另外,若你们并没有健壮的调试输出和日志记录,那个么在你们的开发服务器的管理员中打开它,它将极大地帮助你们。确保为输出选择应用程序、会话、cgi范围。这会降低页面速度,但您只能为IP和dev服务器打开它。我正在使用大学的服务器,很遗憾,我没有管理员权限更改调试输出。@alex哪一行给出了错误?如果您可以转储url.movieID,那么问题就必须在其他地方。因此,我可以将?因为我使用的是xslParam,所以我不太确定如何使用此代码而不是原始代码one@Alex如果没有必要,您仍然希望使用。这个答案没有多大帮助。@Alex-最好从右脚开始。不要这样使用标志。它们完全没有必要。虽然它不会导致语法错误,但通常被认为是糟糕的编码,甚至是Adobe。如果你是CF的新手,你可能会发现这个链接很有帮助:嗯,很确定上面说不需要它们,但谢谢你澄清了@Leigh。事实上,Adobe一点也不反对它们的使用,正确使用它们并不是糟糕的编码实践,但我想我已经解释了为什么……事实上,在某些情况下它们是必需的。它们是“仅在需要时使用”,因为它们在需要使用时有一个点。一些旧的CF开发人员仍然使用它们,认为他们必须…请删除您的评论,因为它是不正确的信息。@justagy-Huh。。。?当答案有相关注释时,请不要进行破坏这些注释上下文的修改。你后来修改的原始答案鼓励这家伙使用不需要的符号:只是Aguy写道:当然你不必使用右边的符号,但因为你刚刚学会了这是识别你的CF VAR的一个好方法。正如我所说,使用无关符号实际上是一种糟糕的编码实践,不值得推荐。尤其是对那些刚刚学习语言的人。让我们鼓励人们以正确的方式学习。修改以消除不必要的迹象