gpt4 book ai didi

php - 访问 xsl 中的 xml 属性

转载 作者:行者123 更新时间:2023-12-02 03:04:10 25 4
gpt4 key购买 nike

我有这个 xml 代码:

<title xml:lang="ar">أربيك</title>
<title xml:lang="en">English</title>

我正在 xsl 中格式化:

<div class="title">
<xsl:value-of select="root/title"/>
</div>

但是,这^仅显示阿拉伯文标题,而不显示英文标题。我尝试了这段代码:

<div class="title">
<xsl:attribute name="xml:lang"><xsl:value-of select="root/title"/> </xsl:attribute>
</div>

但是使用这个^代码,它根本不显示标题。显示英文和阿拉伯文标题的正确方法是什么?

最佳答案

以下内容将起作用。

源 XML:

$xmlDoc = <<< XML
<titles>
<title xml:lang="ar">أربيك</title>
<title xml:lang="en">English</title>
</titles>
XML;

XSL 样式表,其模板与文档中的任何标题节点相匹配

$xslDoc = <<< XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<h1>Titles</h1>
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="title">
<div class="{@xml:lang} title">
<xsl:value-of select="."/>
</div>
</xsl:template>

</xsl:stylesheet>
XSL;

以及使用 PHP 进行转换:

$xml = new DOMDocument();
$xml->loadXML($xmlDoc);
$xsl = new DOMDocument;
$xsl->loadXML($xslDoc);
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);

将给出:

<?xml version="1.0"?>
<h1>Titles</h1>
<div class="ar title">أربيك</div>
<div class="en title">English</div>

编辑:修改标题模板以使用 xml:lang 属性作为类属性,以便您可以使用 CSS 对其进行样式设置。如果您需要更复杂的样式,请编写另一个与该属性匹配的模板(如 Volker 所示)。

关于php - 访问 xsl 中的 xml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com