仅使用XSD而不使用XSL从XML生成HTML


Generate HTML from XML using only XSD and no XSL

我是新开发的,提前道歉和感谢。我的XML和XSD文件中有:

xml:

<paragraph>
  My
    <a href="www.google.co.nz">Googlefoo</a>
  is not strong.
</paragraph>

xsd:

<xsd:element name="paragraph">
  <xsd:complexType mixed="true">
    <xsd:sequence>
      <xsd:element name="a"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
<xsd:element name="a">
  <xsd:complexType>
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="href" type="xsd:anyURI"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:element>

也是可以使用的DTD。

<!ELEMENT paragraph        (#PCDATA | a )*>
<!ELEMENT a    (#PCDATA)>
<!ATTLIST a href CDATA  #REQUIRED>

这些文件是异地托管的,我无法控制它们。它们用于站点内容生成。我可以通过PHP获得元素和属性,并将它们拼接在一起,这样数据就可以了。但是,是否有一种方法可以将XSD应用到XML上,从而使输出保持原样,即:将混合内容拉出来时看起来像所有HTML一样。

我相信. xsd实际上只用于定义您可以验证的数据格式,或者可能是错误的。

我没有. xsl,据我所知,XSLT转换需要它,它可以为我做这件事。这是我想做的理想情况下,如果某种程度上可以实现。

不确定是否可以将CData应用于元素,然后解析它。我还没有找到动态生成xsl的方法。

任何指向资源的指导或指针都很棒。橡皮小鸭万岁

I'm new to development

没关系,我们都是从某处开始的。从你的帖子来看,你似乎是在混合技术,不确定哪个是哪个。

也是可以使用的DTD。
[…它们用于网站内容生成

您的DTD和XSD都用于验证XML的。为此,您需要验证XML解析器(用于DTD)或XSD处理器。这些不是用于内容生成的,模式最多用于验证根据模式中的契约生成的内容是否正确。例如,一个元素是否可以有子元素,还是只能有文本内容。

我相信. xsd实际上只用于定义您可以验证的数据格式,或者可能是错误的。

正确。

[…]以便输出是原样的,即:混合的内容,当拔出时看起来都是HTML快乐的样子。
[…我没有. xsl,据我所知,XSLT转换需要它,而且它可以为我做这件事。这就是我想要的

根据您想要实现的目标,XSLT可能是一种选择。这真的取决于你正在使用的内容管理系统,这是桌面应用程序还是web应用程序,它是否必须运行服务器端或客户端,这在你的情况下是否可行。如果你在谷歌上搜索"xslt php介绍",你会找到像这样的关于为网络生成内容的教程。

要生成"符合HTML"的XML,您需要指定必须将哪些元素转换为哪些HTML元素。也就是说,你的paragraph可以被翻译成p,而你的a元素可以保持原样。对于这类任务,XSLT是一个不错的选择。但同样,这取决于你的基础设施是否可行。

使用XSLT完成这项工作的自然方式通常是处理输入XML服务器端,然后按照以下顺序进行:获取输入XML ->使用XSD处理器验证XML ->根据XSLT样式表运行XML作为输入->获取此转换的输出->将此输出提供给最终用户(即网页、web应用程序、桌面应用程序)