PHP在提交XSL表单数据时调用原始XML文件

| 我有一个页面,该页面使用与XSL样式表匹配的XML文件来创建表单。 XML文件是这样的:
<?xml version=\"1.0\"?>
<?xml-stylesheet href=\"XSL/BasicForm.xsl\" type=\"text/xsl\"?>
<xml>
<title></title>
<entry1></entry1>
<enrty2></entry2>
<entry3></entry3>
</xml>
它引用创建表单的BasicForm.xsl文件是这样的:
<?xml version=\"1.0\"?>
<xsl:stylesheet version=\"1.0\" xmlns=\"http://www.w3.org/1999/xhtml\"xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
<xsl:output method=\"html\"/>

<xsl:template match=\"xml\">

<form method=\"POST\" action=\"action.php\">
<xsl:for-each select=\"child::*\">
            <label>
                <xsl:value-of select=\"name()\"/>: 
                <input name=\"{name()}\" type=\"text\" />
            </label>
            <br />
</xsl:for-each>  

<br/>
<input type=\"submit\" value=\"Submit\" name=\"submitButton\"/>
<br/>

</form>
</xsl:template>
</xsl:stylesheet> 
如您所见,提交表单后,将引用一个PHP文件进行表单处理和打印。 PHP文件如下所示:
<html>
<head></head>
<body >

<?php

$myFile = ;

$fh = fopen($myFile, \'r\');
$theData = fread($fh, filesize($myFile));
fclose($fh);

$doc = DOMDocument::loadXML($theData, LIBXML_NOERROR);
if ($doc !== FALSE) {
$text = \'\'; // used to accumulate output while walking XML tree
foreach ($doc->documentElement->childNodes as $child) {
    if ($child->nodeType == XML_TEXT_NODE) { // keep text nodes
        $text .= $child->wholeText;
    } else if (array_key_exists($child->tagName, $_POST)) {
        // replace nodes whose tag matches a POST variable
        $text .= $_POST[$child->tagName];
    } else { // keep other nodes
        $text .= $doc->saveXML($child);
    }
}
echo $text . \"\\n\";
} else {
echo \"Failed to parse XML\\n\";
}

?>

</body>
</html>
我需要做的是调用原始XML文件,并将其与$ myFile变量匹配,以便使用表单的提交数据对其进行处理。我不能只将绝对引用放在变量字段中,因为此过程将使用多个文件(取决于用户单击的文件)。同样,当提交XSL表单时,我需要找到一种方法来调用PHP脚本中的原始XML文件。 任何帮助都会很棒。 谢谢, Ë     
已邀请:
我并没有完全遵循您“丢失”原始XML文件内容的位置。您可以始终对xml文件的内容进行url_encode,并将其作为隐藏变量包括在呈现给最终用户的表单中。如果xml文件特别大,则可能无法实现,但是在此示例中,只有4个值,您可以将XML作为post字段传递并在action.php中对其进行解码     
在转换之前,使用setParameter()将文件路径变量传递给PHP中的XSLT处理命令已解决问题。然后将该参数称为发布数据,以调用原始XML文件路径。 Ë     

要回复问题请先登录注册