2010-06-29 4 views
0

Je veux envoyer un message codé en tant qu'application/x-www-form-urlencoded, et le message est validé par un schéma XML, donc je trouve un moyen de générer un formulaire html à partir d'un XML Schéma utilisant XSLT.générer une clé de formulaire à partir d'un schéma XML

xsd est ci-dessous:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:m="http://dongfang- china.com#" targetNamespace="http://dongfang-china.com#" elementFormDefault="qualified" attributeFormDefault="unqualified"> 

    <xs:complexType name="SwitchingSchedule">  
    <xs:sequence> 
     <xs:element name="endDateTime" type="xs:dateTime"> 

     </xs:element> 
     <xs:element name="reason" type="xs:string"> 


     </xs:element> 
     <xs:element name="startDateTime" type="xs:dateTime">               

     </xs:element> 
    </xs:sequence> 
</xs:complexType> 

et xslt est ci-dessous:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath- functions"> 
<xsl:output method="html"/> 
    <xsl:template match="xs:schema"> 
    <xsl:for-each select="xs:complexType/xs:sequence/xs:element"> 
    <br/> 
    <label><xsl:value-of select="@name"/></label> 
    <input type="text" name=""/> 

    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

le résultat est:

<br><label>endDateTime</label><input type="text"><br><label>reason</label><input type="text"><br><label>startDateTime</label><input type="text"> 

Mais je ne peux pas trouver un moyen de définir le nom d'entrée de la xsd, ou devrais-je utiliser javascript?

Répondre

1

Essayez:

<input type="text" name="{@name}"/> 

(voir W3C specifications)

Par ailleurs, vous pouvez utiliser xs:annotation/xs:appInfo pour ajouter des informations sur mieux regarder les étiquettes, etc ... aide

1

contextuelle Vous avez quelques choix:

Utiliser xsl:attribute:

<input type="text"> 
    <xsl:attribute name="name"> 
    <xsl:value-of select="@name" /> 
    </xsl:attribute> 
</input> 

Utilisez le raccourci (modèle de valeur d'attribut):

<input type="text" name="{@name}"/> 
Questions connexes