我正在尝试在 php 中使用 XML 和 XSLT 输出表单,但我无法以某种方式满足条件。这是我的 XML 的样子:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="form.xsl"?>
<root>
<formset>
<field>
<type>text</type>
<value>This is test value</value>
</field>
<field>
<type>radio</type>
<value>Male</value>
</field>
<field>
<type>checkbox</type>
<value>Hobby</value>
</field>
<field>
<type>button</type>
<value>Click Me</value>
</field>
</formset>
</root>
这是我的 XSLT 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Rendering of Form</title>
</head>
<body>
<form action="" method="post">
<xsl:for-each select="/root/formset/field">
<xsl:choose>
<xsl:when test="type = text">
<input type="text" value="{value}" />
</xsl:when>
<xsl:when test="type = radio">
<input type="radio" value="{value}" /> <xsl:value-of select="value"/>
</xsl:when>
<xsl:when test="type = checkbox">
<input type="checkbox" value="{value}" /> <xsl:value-of select="value"/>
</xsl:when>
<xsl:when test="type = button">
<input type="button" value="{value}" />
</xsl:when>
<xsl:otherwise>
<span>Unknown Type</span>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的 PHP 代码就是这样简单的回显输出:
<?php
// LOAD XML FILE
$XML = new DOMDocument();
$XML->load('form.xml');
// START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load('form.xsl');
$xslt->importStylesheet( $XSL );
echo $xslt->transformToXML( $XML );
?>
但不知何故我的输出呈现xsl:otherwise
条件谁能告诉我为什么?我是 XSLT 的新手