Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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
Php 如何将CSS格式化应用于XSL表单输入字段_Php_Html_Css_Xml_Xslt - Fatal编程技术网

Php 如何将CSS格式化应用于XSL表单输入字段

Php 如何将CSS格式化应用于XSL表单输入字段,php,html,css,xml,xslt,Php,Html,Css,Xml,Xslt,所以,我有一个复杂的小doo-dad的网页,可以创建MADLIB类型的故事。故事采用XML格式,如下所示: <?xml version="1.0"?> <body> I remember going to sleep around <Num1 class="Number">9</Num1> O'clock. In my dream, I was laying on a <N1 class="Noun">t

所以,我有一个复杂的小doo-dad的网页,可以创建MADLIB类型的故事。故事采用XML格式,如下所示:

<?xml version="1.0"?>
  <body>
       I remember going to sleep around <Num1 class="Number">9</Num1> O'clock.
       In my dream, I was laying on a <N1 class="Noun">table</N1> in a
       strange room with no <PN1 class="Plural Noun">windows</PN1> or doors.
  </body>
<?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="/body">

<form method="post" action="Results.php" style="text-align:right;margin-top: 75px;margin-right:25%;">
  <xsl:for-each select="child::*">
            <label>
                <xsl:value-of select="@class"/>: 
                <input name="{name()}" type="text" />
            </label>
            <br />

<input type="submit" value="Submit" name="submitButton"/>
  </xsl:for-each>  

</form>
</xsl:template>
</xsl:stylesheet>

我记得9点左右睡觉。
在梦中,我躺在一张桌子上
没有门窗的奇怪房间。
“body”标记的所有子项(如“Num1”、“N1”和“PN1”)都使用和XSL表处理为HTML表单,如下所示:

<?xml version="1.0"?>
  <body>
       I remember going to sleep around <Num1 class="Number">9</Num1> O'clock.
       In my dream, I was laying on a <N1 class="Noun">table</N1> in a
       strange room with no <PN1 class="Plural Noun">windows</PN1> or doors.
  </body>
<?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="/body">

<form method="post" action="Results.php" style="text-align:right;margin-top: 75px;margin-right:25%;">
  <xsl:for-each select="child::*">
            <label>
                <xsl:value-of select="@class"/>: 
                <input name="{name()}" type="text" />
            </label>
            <br />

<input type="submit" value="Submit" name="submitButton"/>
  </xsl:for-each>  

</form>
</xsl:template>
</xsl:stylesheet>

: 

由此,将创建一个表单,该表单显示基于子元素的类的标签,以及表单数据的输入框。比如:

编号:______;
名词:u_____
复数名词:uuuuuuuuuuuuuuuu

提交

假设我输入25表示“数字”,输入Frog表示“名词”,输入Trees表示“复数名词”

输入并提交表单数据后,表单数据将通过PHP进行处理,以替换原始故事中的子节点字符串

<html>
  <head><link rel="stylesheet" type="text/css" href="SFJPlaza.css"></head>
<body>

  <div id="story">

    <?php

      $file = $_POST[filepath];
      $open = fopen($file, 'r');
      $theData = fread($open, filesize($file));
      fclose($open);

      $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);
             }
   }
//print $text . "\n";
} else {
    echo "Failed to parse XML\n";
}

        $xml = new DOMDocument();
        $root = $xml->createElement("body");
        $xml->appendChild($root);

        $bodyText = $xml->createTextNode($text);
        $root->appendChild($bodyText);

        //$xml->formatOutput = true;
        print "<pre>".$xml->saveXML() ."</pre>";
    ?>
 </div>
</body>
</html>

documentElement->childNodes作为$child){
如果($child->nodeType==XML\u TEXT\u NODE){//保留文本节点
$text.=$child->wholeText;
}else如果(数组\键\存在($child->tagName,$\ POST)){
//替换标记与POST变量匹配的节点
$text.=$\u POST[$child->tagName];
}else{//保留其他节点
$text.=$doc->saveXML($child);
}
}
//打印$text。“\n”;
<xsl:template match="Num1">
  <label style="color: yellow">... </label>
</xsl:template>
}否则{ echo“解析XML失败\n”; } $xml=newdomdocument(); $root=$xml->createElement(“body”); $xml->appendChild($root); $bodyText=$xml->createTextNode($text); $root->appendChild($bodyText); //$xml->formatOutput=true; 打印“$xml->saveXML()”;
<xsl:template match="Num1">
  <label style="color: yellow">... </label>
</xsl:template>
?>
当故事显示时,它将显示为:

“我记得25点左右睡觉。 在我的梦中,我躺在一只青蛙身上 没有树也没有门的奇怪房间。”

所有这些都非常好,非常漂亮。不过,我想做的是分别格式化表单数据中的字段(25、Frog和Trees)。通过这种方式,我可以为它们添加下划线、颜色或粗体样式,使它们作为替换词从故事的其余部分中脱颖而出

有人知道我该怎么做吗

提前感谢,,
对于每个select=“*”

使用
应用模板select=“*”
而不是
,然后为您拥有的不同元素编写模板,例如


... 

标签用于表单字段。我想要添加的是通过PHP处理的输入数据,以显示最终的故事。由于问题被标记为XSLT,我认为您需要这方面的帮助,很抱歉误解。那么,在哪里打印“$xml->saveXML()”
要应用CSS?当您只需将XML写入HTML文档时,我将从CSS样式化元素开始,例如在样式表中,您可以定义
Num1{color:yellow;}
。显然,一种更干净的方法(它不依赖于HTML文档中间的未知XML元素的样式)将定义另一个XSLT样式表,并使用<代码> XSLTPrime< /C> > <代码> $XML<代码>。是的,我想我把事情弄得太复杂了。如果我只关注原始XML文件的格式化,那么不管输入或替换什么文本,它都应该完成。我要试一试。谢谢
<xsl:template match="Num1">
  <label style="color: yellow">... </label>
</xsl:template>