2

XSLT が引数を PHP 関数に渡す方法に問題があります。<xsl:value-of select="php:function('form::validate_add',@name,type,message)" />属性名、要素タイプ、および要素メッセージを php 関数に渡すために使用していますが、渡される引数は、私のニーズにとって役に立たない情報を含む大きな配列です。

XML:

<element name='text2-1'>
    <type>required</type>
    <message>The field Enter Text is required</message>
</element>
<element name='textarea'>
    <type>required</type>
    <message>The textarea is required</message>
</element>

XSLT:

<xsl:for-each select="element">
   <xsl:value-of select="php:function('form::validate_add',@name,type,message)" />
</xsl:for-each>

PHP:

public static function validate_add($name, $type, $message=NULL) {
#tmp
print_r($name);
}

戻る:

Array
(
    [0] => DOMAttr Object
        (
            [name] => name
            [specified] => 1
            [value] => text2-1
            [ownerElement] => (object value omitted)
            [schemaTypeInfo] => 
            [nodeName] => name
            [nodeValue] => text2-1
            [nodeType] => 2
            [parentNode] => (object value omitted)
            [childNodes] => (object value omitted)
            [firstChild] => (object value omitted)
            [lastChild] => (object value omitted)
            [previousSibling] => 
            [attributes] => 
            [ownerDocument] => (object value omitted)
            [namespaceURI] => 
            [prefix] => 
            [localName] => name
            [baseURI] => 
            [textContent] => text2-1
        )

)

したがって、配列の「値」キーは、私が求めている正しい値であるように見えます。配列全体を渡し、PHP 関数で配列から正しい値を抽出するのではなく、この引数を直接渡す方法はありますか? PHP 関数を変更したり、新しい関数を追加したりしたくありません。

4

2 に答える 2

6

XPath/XSLT から DOM ノードの文字列値を渡したい場合は、<xsl:value-of select="php:function('form::validate_add', string(@name), string(type), string(message))" />

于 2013-11-09T15:59:49.173 に答える