我正在尝试第二天,但我没有找到任何有用的东西。 我有一个代码,它将xml + xsl转换为html,但我必须使用xml架构(.xsd)而不是xmls来渲染基于.xsd和.xsl(样式)的html表单。
我的传递函数(xml + xsl到html):
public static HtmlString RenderXml(this HtmlHelper helper, string xml, string xsltPath)
{
xml = System.IO.File.ReadAllText(("C:/Users/Student/Documents/Visual Studio 2010/Projects/MvcApplication2/MvcApplication2/complex-sample.xsd"));
XsltArgumentList args = new XsltArgumentList();
XslCompiledTransform t = new XslCompiledTransform();
t.Load(xsltPath);
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.ValidationType = ValidationType.DTD;
using (XmlReader reader = XmlReader.Create(new StringReader(xml), settings))
{
StringWriter writer = new StringWriter();
t.Transform(reader, args, writer);
HtmlString htmlString = new HtmlString(writer.ToString());
return htmlString;
}
}
任何人都可以帮忙吗?
答案 0 :(得分:0)
任何XSD都是XML,因此您可以像任何其他XML一样处理它。
我没有准备好生成表单的示例,但这可能会有所帮助http://lists.xml.org/archives/xml-dev/200012/msg00083.html。
答案 1 :(得分:0)
我的.XSD文件:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adr="http://crd.gov.pl/xml/schematy/adres/2009/11/09/" xmlns:typ="http://crd.gov.pl/xml/schematy/typy/2009/11/16/" xmlns:meta="http://crd.gov.pl/xml/schematy/meta/2009/11/16/" xmlns:str="http://crd.gov.pl/xml/schematy/struktura/2009/11/16/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ins="http://crd.gov.pl/xml/schematy/instytucja/2009/11/16/" xmlns:os="http://crd.gov.pl/xml/schematy/osoba/2009/11/16/" xmlns="http://crd.gov.pl/wzor/2016/12/22/3790/" targetNamespace="http://crd.gov.pl/wzor/2016/12/22/3790/" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/struktura/2009/11/16/" schemaLocation="http://crd.gov.pl/xml/schematy/struktura/2009/11/16/struktura.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/adres/2009/11/09/" schemaLocation="http://crd.gov.pl/xml/schematy/adres/2009/11/09/adres.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/osoba/2009/11/16/" schemaLocation="http://crd.gov.pl/xml/schematy/osoba/2009/11/16/osoba.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/typy/2009/11/16/" schemaLocation="http://crd.gov.pl/xml/schematy/typy/2009/11/16/typy.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/instytucja/2009/11/16/" schemaLocation="http://crd.gov.pl/xml/schematy/instytucja/2009/11/16/instytucja.xsd"/>
<xsd:import namespace="http://crd.gov.pl/xml/schematy/meta/2009/11/16/" schemaLocation="http://crd.gov.pl/xml/schematy/meta/2009/11/16/meta.xsd"/>
<xsd:annotation>
<xsd:documentation>Wniosek o wydanie wypisów i wyrysów z miejscowego
planu zagospodarowania przestrzennego gminy (miasta)
</xsd:documentation>
</xsd:annotation>
<xsd:element name="Dokument" type="DokumentTyp"/>
<xsd:complexType name="DokumentTyp">
<xsd:sequence>
<xsd:element name="OpisDokumentu" type="str:OpisDokumentuTyp"/>
<xsd:element name="DaneDokumentu" type="str:DaneDokumentuTyp"/>
<xsd:element name="TrescDokumentu" type="TrescDokumentuTyp"/>
<xsd:element ref="ds:Signature" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TrescDokumentuTyp" mixed="false">
<xsd:complexContent mixed="false">
<xsd:extension base="str:TrescDokumentuTyp">
<xsd:sequence>
<xsd:element ref="adr:Miejscowosc"/>
<xsd:element name="Data" type="xsd:date">
<xsd:annotation>
<xsd:documentation>Data</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Urzad" type="str:Tekst200Typ">
<xsd:annotation>
<xsd:documentation>Do</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:choice>
<xsd:element name="Wnioskodawca">
<xsd:annotation>
<xsd:documentation>
Wnioskodawca - osoba fizyczna
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="os:Nazwisko" maxOccurs="3" minOccurs="1">
</xsd:element>
<xsd:element ref="os:Imie"/>
<xsd:element ref="os:PESEL" maxOccurs="1" minOccurs="0"/>
<xsd:element ref="adr:Adres"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WnioskodawcaOsobaPrawna">
<xsd:annotation>
<xsd:documentation>
Wnioskodawca - osoba prawna
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Nazwa" type="ins:NazwaInstytucjiTyp">
<xsd:annotation>
<xsd:documentation>
Nazwa
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="ins:NIP" maxOccurs="1" minOccurs="0">
</xsd:element>
<xsd:element ref="ins:REGON" maxOccurs="1" minOccurs="0">
</xsd:element>
<xsd:element name="Adres" type="adr:AdresTyp">
<xsd:annotation>
<xsd:documentation>
Adres siedziby
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:element name="Wniosek">
<xsd:annotation>
<xsd:documentation>
Zwracam się z prośbą o
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element name="WydaniaWypisu">
<xsd:annotation>
<xsd:documentation>
wydanie wypisu
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="z miejscowego planu zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
<xsd:enumeration value="ze studium uwarunkowań i kierunków zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="WydaniaWyrysu">
<xsd:annotation>
<xsd:documentation>
wydanie wyrysu
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="z miejscowego planu zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
<xsd:enumeration value="ze studium uwarunkowań i kierunków zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="WydanieWypisuWyrysu">
<xsd:annotation>
<xsd:documentation>
wydanie wypisu i wyrysu
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="z miejscowego planu zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
<xsd:enumeration value="ze studium uwarunkowań i kierunków zagospodarowania przestrzennego gminy (miasta)">
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:choice>
<xsd:element name="DaneNieruchomosci">
<xsd:annotation>
<xsd:documentation>
Dane nieruchomości
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Dzialka" maxOccurs="unbounded" minOccurs="1">
<xsd:annotation>
<xsd:documentation>
Działka
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="meta:Identyfikator">
<xsd:annotation>
<xsd:documentation>
Identyfikator działki
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="NumerDzialki" type="str:Tekst65Typ">
<xsd:annotation>
<xsd:documentation>
Numer
działki
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="KartaMapy" type="str:Tekst65Typ" maxOccurs="1" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Karta
mapy
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Obreb" type="str:Tekst65Typ">
<xsd:annotation>
<xsd:documentation>
Obręb
(w
przypadku
braku
obrębu
karta
mapy)
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:choice>
<xsd:element ref="adr:Ulica" maxOccurs="1" minOccurs="0">
</xsd:element>
<xsd:element ref="adr:Adres" maxOccurs="1" minOccurs="0">
</xsd:element>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element ref="str:Zalaczniki"/>
<xsd:element name="InformacjeDodatkowe" type="str:Tekst2000Typ" maxOccurs="1" minOccurs="0">
<xsd:annotation>
<xsd:documentation>
Informacje dodatkowe
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="FormaOdbioru">
<xsd:annotation>
<xsd:documentation>
Forma odbioru dokumentów
</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Drogą elektroniczną poprzez skrzynkę kontaktową">
</xsd:enumeration>
<xsd:enumeration value="Poprzez pocztę tradycyjną">
</xsd:enumeration>
<xsd:enumeration value="Osobiście w siedzibie urzędu">
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
我的.XSLT文件处于链接状态(此处附加时间太长)