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 が初めてです