【问题标题】:How to set xsl attribute using processing instruction php如何使用处理指令php设置xsl属性
【发布时间】:2013-06-11 23:53:44
【问题描述】:

我在尝试使用 PHP 处理指令为属性设置值时遇到问题:

XSLT

<li itemprop="startDate">
    <xsl:attribute name="content">
        <xsl:processing-instruction name="php">
            echo "Monday";
        ?</xsl:processing-instruction>
    </xsl:attribute>
    Monday
</li>

页面渲染良好,但属性始终为空。

输出

<li itemprop="startDate" content="">Monday</li>

我希望 PHP 在属性中回显一个值

【问题讨论】:

    标签: php html xml xslt xml-parsing


    【解决方案1】:

    如果您使用 PHP 通过 XSLT 转换 XML,您可以在 php 中使用:

    $proc->setParameter(null, 'day', 'Monday');
    
    $proc->transformToXML($xml);
    

    然后在你的 XSLT 中使用这个变量:

    <xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:php="http://php.net/xsl"
    exclude-result-prefixes="php"
    xsl:extension-element-prefixes="php">
    
    <xsl:param name="day"/> <!-- Set the parameter -->
    
    <xsl:attribute name='content'>
        <xsl:value-of select="$day"/>
    </xsl:attribute>
    

    一切顺利!

    【讨论】:

      【解决方案2】:

      你没有说你是如何打开 XML 的。但是由于回声,我认为它可以/应该包含 php 指令。

      xsl:processing-instruction 在这里没有意义。试试这个:

      <li itemprop="startDate">
          <xsl:attribute name="content">
              <?php
                  echo "Monday";
              ?>
          </xsl:attribute>
          Monday
      </li>
      

      【讨论】:

      • 谢谢。不幸的是,这也不起作用。我正在运行的 PHP 脚本将 XML 和 XSLT 一起解析以构建一个文件。也许问题与在属性标签中包含脚本有关?
      • 你必须展示你的 php 的样子。也许this 可能会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2017-11-07
      • 2014-09-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多