我对语言和解析都不熟悉。我有一个xsd文件,我必须解析并使用xsd文件的值生成动态表单。
这是我的xsd文件。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="app_bundle_name" type="xs:string" />
<xs:element name="app_name" type="xs:string" />
<xs:element name="app_xsd_version" type="xs:string" fixed="1.001"/>
<xs:element name="configuration_version" type="xs:string"/>
<xs:element name="configuration_name" type="xs:string" />
<xs:complexType name="connections1">
<xs:sequence>
<xs:element name="ip_address" type="xs:string" minOccurs="8" />
<xs:element name="port" type="xs:integer" minOccurs="8"/>
<xs:element name="ssl" type="xs:boolean" minOccurs="8"/>
<xs:element name="device_name" type="xs:string" minOccurs="8"/>
<xs:element name="name" type=`enter code here`"xs:string" />
<xs:element name="user" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="barcode_enter" type="xs:boolean" />
<xs:element name="barcode_next" type="xs:boolean" />
<xs:element name="close_session_on_exit" type="xs:boolean" />
<xs:element name="send_field_exit" type="xs:boolean" />
<xs:element name="field_exit_on_next" type="xs:boolean" />
<xs:element name="barcode_prefix" type="xs:string" />
<xs:element name="barcode_suffix" type="xs:string" />
<xs:element name="treat_enter_as_field_exit" type="xs:boolean" />
<xs:element name="maintain_zoom_level" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="settings" />
</xs:schema>
这里的名称应该被解析为label.and type应该成为控件的类型,例如string应该成为textbox,boolean应该变成选择框,选项为yes或no.Fixed值将在textboxes中反映为它们的值。
答案 0 :(得分:0)
您可以使用simplexml_load_file
功能从文件中提取数据。然后循环遍历xs:sequence
元素子元素,随时创建表单元素。
答案 1 :(得分:0)
Finally got the answer by myself...
So i am posting the code,may be anyone else could get help from the code.....
<html>
<head>
<link rel="stylesheet" type="text/css" href="style_form.css" />
</head>
<body>
<?php
$doc = new DOMDocument();``
$doc->preserveWhiteSpace = true;
$doc->load('test.xsd');
$xsdstring = "test.xsd";
$t = new XMLREADER();
$t->open($xsdstring);
while($t->read())
{
if ($t->name === "xs:element")
{
echo '<div class="contain_div"><div class="lblname" >'. $t->getAttribute('name').'</div>';
if($t->getAttribute('type')=='xs:string')
{
if($t->getAttribute('fixed')!='')
{
echo '<div class="txtvaluestr"><input type="text" value="'.$t->getAttribute('fixed').'" readonly/></div></div>';
}
else
{
if($t->getAttribute('maxOccurs')!='')
{
$max=$t->getAttribute('maxOccurs');
echo '<div class="txtvaluestr"><input type="text"/></div><input style="margin-left:10px;" type="button" value="+" class="addButton"></div>';
}
else
{
echo '<div class="txtvaluestr"><input type="text"/></div></div>';
}
}
}
else if($t->getAttribute('type')=='xs:integer')
{
if($t->getAttribute('fixed')!='')
enter code here
{
echo '<div class="txtvalueint"><input type="text" value="'.$t->getAttribute('fixed').'" readonly/></div></div>';
}
else
{
if($t->getAttribute('maxOccurs')!='')
{
echo '<div class="txtvalueint"><input type="text"/></div><input style="margin-left:10px;" type="button" value="+" class="addButton"></div>';
}
else
{
echo '<div class="txtvalueint"><input type="text"/></div></div>';
}
}
}
else if($t->getAttribute('type')=='xs:boolean')
{
if($t->getAttribute('fixed')!='')
{
echo '<div class="txtvaluebool"><select id="opt"><option>'.$t->getAttribute('fixed').'</option></select></div></div>';
}
else
{
echo '<div class="txtvaluebool"><select id="opt"><option>Yes</option><option>no</option></select></div></div>';
}
}
}
}
?>
</body>
<html>