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

时间:2014-08-18 03:57:18

标签: php html xml xslt xsd

我刚接触开发,道歉并提前致谢。 我有一个案例,在我的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。

任何指导或指向资源的指针都会很棒。 Rubber Ducky万岁。

1 个答案:

答案 0 :(得分:2)

  

我是开发新手

没关系,我们都是从某个地方开始的。从阅读你的帖子看,你似乎在混合技术并且不确定哪个是哪个。

  

也可能是有用的DTD。
   [...]它们用于网站内容生成

您的DTD以及XSD用于XML的验证。为此,您需要a validating XML parser(对于DTD)或XSD processor。这些用于内容生成,最多使用模式验证根据模式中的合同生成的内容是否正确。即,元素是否可以具有子元素或仅具有文本内容。

  

我认为.XSD仅用于定义您可以验证的数据格式,或者可能是错误的。

这是正确的。

  

[...]以便输出原样,即:混合内容,当拉出时看起来像所有HTML一样快乐。
   [...]我没有.XSL,据我所知,XSLT转换需要并且可以为我做这个。理想情况下,这就是我想要的   如果以某种方式可以实现的话。

根据您想要实现的目标,XSLT可能是一种方法。这实际上取决于您使用的内容管理系统,这适用于桌面应用程序或Web应用程序,无论是在运行服务器端还是客户端,这是否适用于您的情况。如果您Google for "xslt php introduction",您会找到有关为网络生成内容的此类教程like this one

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

将XSLT用于作业的自然方式通常是处理输入XML服务器端,然后按此顺序进行:获取输入XML - &gt;使用XSD处理器验证XML - &gt;运行XML作为针对XSLT样式表的输入 - &gt;抓住这个转变的输出 - &gt;将此输出提供给最终用户(即网页,网络应用程序,桌面应用程序)。