Xml 将XSLT转换为简单的HTML片段
XMLXml 将XSLT转换为简单的HTML片段,xml,xslt,Xml,Xslt,XML 游览 虚拟条目1 我爱你,我爱你。。。 no-image.jpg XSLT <?xml version="1.0" encoding="utf-8" ?> <data> <events /> <tour> <section id="3" handle="tour">Tour</section> <entry id="15">
游览
虚拟条目1
我爱你,我爱你。。。
no-image.jpg
XSLT
<?xml version="1.0" encoding="utf-8" ?>
<data>
<events />
<tour>
<section id="3" handle="tour">Tour</section>
<entry id="15">
<title handle="dummy-entry-1">Dummy Entry 1</title>
<description mode="formatted">Lorem ipsum dolor sit amet...</description>
<photo size="24 KB" path="/images/tour" type="image/jpeg">
<filename>no-image.jpg</filename>
<meta creation="2010-03-07T17:00:24-08:00" width="1000" height="1000" />
</photo>
</entry>
</tour>
</data>
{标题}
{说明}
这是我正在使用的代码。我是XSLT的新手,我想我不明白它是如何将我的XML完全转换成HTML的。我计划通过AJAX加载这段代码,所以我真正需要它输出的是一个只包含这三项的空白html文档
我意识到我省略了xsl:output标记,这是因为我真的不明白如何让它只将该信息与xml中的标记匹配,而不添加、标记等。它输出的只是html文档中的一个文本字符串
如果有帮助,我将在Symphony CMS环境中工作。首先,您必须添加此项
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/data/tour/entry">
<img src="{filename}"/>
<h2>{heading}</h2>
{description}
</xsl:template>
</xsl:stylesheet>
它会告诉XSLT解析器您想要输出HTML
要将一些内容从XML输出到HTML,必须使用
<xsl:output method="html" encoding="UTF-8" indent="no"/>
另外,根据您需要使用的输出的复杂性,它允许您在XSLT文件中创建可重用的模板
在你的例子中
<xsl:value-of select="/xpath/of/xml"/>
希望这有帮助
PHP代码段
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:variable name="filename" select="/data/tour/entry/photo/filename"/>
<img src="{$filename}"/>
<h2><xsl:value-of select="/data/tour/entry/title"/></h2>
<xsl:value-of select="/data/tour/entry/description"/>
</xsl:template>
</xsl:stylesheet>
loadXml($xmlC);
$xsl=newdomdocument();
$xsl->load('template.xlst');
//变压器配置
$proc=new XSLTProcessor();
$proc->importStyleSheet($xsl);//附加的règles xsl
$proc->RegisterHPFunctions();
标题('Content-Type:text/xml');
echo$proc->transformToXML($xml);
PS:用您的XML更新。我会用PHP试试看它是否运行正常
PS2:通过运行PHP示例和更新模板进行更新这就是答案。我需要改变我应用模板的方式。不知道为什么它会修好,但它确实修好了
<?php
$xml = new DOMDocument;
$xmlC = file_get_contents('data.xml');
$xml->loadXml( $xmlC);
$xsl = new DOMDocument();
$xsl->load('template.xlst');
// Configuration du transformateur
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl); // attachement des règles xsl
$proc->registerPHPFunctions();
header('Content-Type: text/xml');
echo $proc->transformToXML($xml);
$(文档).ready(函数(){
//cufon如何基于css文档将字体应用于某些元素和样式。
Cufon.替换(“#内容主h2”);
});
仅输出纯文本。我的html标记将被删除。即使使用
?你用什么做处理?还有你的html标签在哪里?你也可以用一个你正在处理的XML的例子来更新你的问题,这会有所帮助。我不知道这是否会影响我的输出。在Safari和Firefox中呈现此问题。@jaasum:我不确定您的问题是否已得到解决,但如果在我的PHP上接受我的答案会很好。代码运行良好……如果您能真正提出一个问题会更好。我看你自己已经“回答”了,但你不明白为什么。至少在您的回答中,您似乎已经了解到,要在模板处理条目元素时处理filename元素,属性模板应该是{photo/filename},并且(可能是受@Ragez启发的),您需要使用它来获取属性模板不起作用的地方的值。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:template match="/">
<xsl:apply-templates select="data/tour-entry/entry" />
</xsl:template>
<xsl:template match="/data/tour-entry/entry">
<img src="{$root}/image/2/675/300/5/images/tour/{photo/filename}" alt="" class="image" />
<h2><xsl:value-of select="title"/></h2>
<xsl:copy-of select="description"/>
<script type="text/javascript">
$(document).ready(function(){
// How cufon applies our font to certain elements, styles based on css document.
Cufon.replace('#content-main h2');
});
</script>
</xsl:template>