如何在Magento使用XSL?

Magento用户多久经常在XML文件中处理大规模数据?我想,答案很清楚:每次他们想在不同版本的Magento和第三方软件之间转移订单数据。让’谈论神奇的XSL语言。

What is XSL ?

XSL. 是一个可扩展的样式表语言。全XSL逻辑由3个组件(XSL,XSLT和XPath)组成,今天我们谈论XSLT,这是最重要的XSLT。 XSL转换或XSLT是一种描述如何将一个XML文档(表示为树)转换为另一个语言。

因此,使您的XML文件更方便阅读和信息提取,您真的需要可扩展的样式表。 XSL积极使用样式表,它使用两个基本类别的技术指定XML信息的演示:

*将输入文档的可选转换为另一个结构。

*描述如何呈现转换的信息(即,与转换信息的各个部分中的每一部分关联的属性的说明书)

我们介绍一些 例子 让你了解它是如何工作的。

XSL. 表示许多用于重写XML文件的仪器。让’s analyze them.

采用 <for-each> instrument

<for-each>是一个循环,它使用它包含的模板处理每个所选节点。

/目标/ 想象一下,您有一个文件有关于有关库存的书籍的信息,您需要一张包含所有这些书籍的作者,标题,价格,发布日期和描述的表。

让我们’s start with a 基本XML文件,包括详细信息。此XML将用于创建XSL模板。

<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>
深入了解使用XML创建应用程序。
</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>
前建筑师争夺公司僵尸,一个邪恶的女巫和她自己的童年成为世界女王。
</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>
在英格兰纳米技术协会崩溃后,年轻的幸存者为新社会奠定了基础。
</description>
</book>
<book id="bk104">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>
在后期启示录英格兰,只有随着Oberon的人们知道的,只知道伦敦居民的新生活。 Maeve endendant续集。
</description>
</book>
<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-09-10</publish_date>
<description>
Maeve,Half-Sisters的两个女儿,互相争斗,用于控制英格兰。奥贝伦续集's Legacy.
</description>
</book>
</catalog>

2.现在你看到了 XSL. 模板 in which <xsl:for-each 选择=”目录/书籍> is used. Where 选择=”目录/书籍”是一个属性。创建XSL模板后,将其应用于基本XML文件。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table>
<xsl:for-each select="目录/书籍">
<tr>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="价格"/>
</td>
<td>
<xsl:value-of select="publish_date"/>
</td>
<td>
<xsl:value-of select="description"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

3. The 最终变种 仅表示关于XML基础的所需信息,根据XSL模板格式化。

<table>
<tbody>
<tr>
<td>Gambardella, Matthew</td>
<td>XML Developer's Guide</td>
<td>44.95</td>
<td>2000-10-01</td>
<td>深入了解使用XML创建应用程序。</td>
</tr>
<tr>
<td>Ralls, Kim</td>
<td>Midnight Rain</td>
<td>5.95</td>
<td>2000-12-16</td>
<td>前建筑师争夺公司僵尸,一个邪恶的女巫和她自己的童年成为世界女王。</td>
</tr>
<tr>
<td>Corets, Eva</td>
<td>Maeve Ascendant</td>
<td>5.95</td>
<td>2000-11-17</td>
<td>在英格兰纳米技术协会崩溃后,年轻的幸存者为新社会奠定了基础。</td>
</tr>
<tr>
<td>Corets, Eva</td>
<td>Oberon's Legacy</td>
<td>5.95</td>
<td>2001-03-10</td>
<td>在后期启示录英格兰,只有随着Oberon的人们知道的,只知道伦敦居民的新生活。 Maeve endendant续集。</td>
</tr>
<tr>
<td>Corets, Eva</td>
<td>The Sundered Grail</td>
<td>5.95</td>
<td>2001-09-10</td>
<td>Maeve,Half-Sisters的两个女儿,互相争斗,用于控制英格兰。奥贝伦续集's Legacy.</td>
</tr>
<tr>
<td>Randall, Cynthia</td>
<td>Lover Birds</td>
<td>4.95</td>
<td>2000-09-02</td>
<td>当卡拉在鸟类学会会议上遇到保罗时,随着羽毛荷叶边的雨季飞行。</td>
</tr>
</tbody>
</table>

4.  最终代码的视觉变体 包含一张表,其中包含有关每本书的作者,标题,价格,发布日期和描述的信息。

Gambardella,Matthew. XML开发人员’s Guide 44.95 2000-10-01 深入了解使用XML创建应用程序。
洛尔斯,金 午夜雨 5.95 2000-12-16 前建筑师争夺公司僵尸,一个邪恶的女巫和她自己的童年成为世界女王。
珊瑚,伊娃 maeve asvendent 5.95 2000-11-17 在英格兰纳米技术协会崩溃后,年轻的幸存者为新社会奠定了基础。
珊瑚,伊娃 奥贝朗’s Legacy 5.95 2001-03-10 在后期启示录英格兰,只有随着Oberon的人们知道的,只知道伦敦居民的新生活。 Maeve endendant续集。
珊瑚,伊娃 晒太长的格拉进 5.95 2001-09-10 Maeve,Half-Sisters的两个女儿,互相争斗,用于控制英格兰。奥贝伦续集’s Legacy.
兰德尔,辛西娅 情人鸟类 4.95 2000-09-02 当卡拉在鸟类学会会议上遇到保罗时,随着羽毛荷叶边的雨季飞行。

使用两者 <for-each> and <if> instruments.

/目标/ 假设,您有一个文件,其中包含有关库存的书籍的信息。但现在您需要介绍仅对幻想书籍的特定信息,例如作者,标题,发布日期和描述,所以我们有特定的条件。

在这里,我们使用 基本XML文件 从前面的例子。

2.让我们的目标现实我们创造一个  XSL. 模板 with <xsl:for-each 选择=”catalog/book”> and <xsl:if 测试=”genre = ‘Fantasy'”>.  <if>是一种乐器,允许您使用特定条件。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:for-each select="目录/书籍">
<xsl:if test="类型='Fantasy'">
<xsl:value-of select="author"/>
presented
<xsl:value-of select="title"/>
和 published it in
<xsl:value-of select="publish_date"/>
. Here is small book description:
<xsl:value-of select="description"/>
<xsl:text></xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

3. The final variant 根据我们的条件,被代表为纯文本。

洛尔斯,金 presented Midnight Rain and published it in 2000-12-16. Here is small book description:
A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.
珊瑚,伊娃 presented Maeve Ascendant and published it in 2000-11-17. Here is small book description:
After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.
珊瑚,伊娃 presented Oberon's Legacy and published it in 2001-03-10. Here is small book description:
In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
为了 the inhabitants of London. Sequel to Maeve
Ascendant.
珊瑚,伊娃 presented The Sundered Grail and published it in 2001-09-10. Here is small book description:
这 two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
奥贝朗's Legacy.

采用 <xsl:choose>, <xsl:when><xsl:otherwise> instruments.

/目标/ 假设,您有一个文件,其中包含有关库存可获得的书籍的信息。但现在您的目标更复杂:根据类型,您想要对信息进行排序。除以各种类型的类型,将使用特定颜色。例如,幻想类型将是紫,计算机类型将是绿色的,其他类型将是黄色的。

1.使用 基本XML文件 again.

2.在这方面 XSL. 模板 we use <xsl:choose> instrument. <xsl:choose>是一种多路交换元件,包括更多仪器:<xsl:when> and <xsl:otherwise>。所有这些元素都是相互关联的。第一个的内容<xsl:when>元素评估为true将插入结果树中。如果没有人评估为真,那么内容<xsl:otherwise>元素已插入。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table>
<xsl:for-each select="目录/书籍">
<xsl:choose>
<xsl:when test="类型='Fantasy'">
<tr>
<td style="background-color: #bd7aec">
Genre of:
<xsl:value-of select="genre"/>
<xsl:text></xsl:text>
<xsl:value-of select="author"/>
presented
<xsl:value-of select="title"/>
和 published it in
<xsl:value-of select="publish_date"/>
. Here is small book description:
<xsl:text></xsl:text>
<xsl:value-of select="description"/>
<xsl:text></xsl:text>
</td>
</tr>
</xsl:when>
<xsl:when test="类型='Computer'">
<tr>
<td style="background-color: #62e789">
Genre of:
<xsl:value-of select="genre"/>
<xsl:text></xsl:text>
<xsl:value-of select="author"/>
presented
<xsl:value-of select="title"/>
和 published it in
<xsl:value-of select="publish_date"/>
. Here is small book description:
<xsl:text></xsl:text>
<xsl:value-of select="description"/>
<xsl:text></xsl:text>
</td>
</tr>
</xsl:when>
<xsl:otherwise>
<tr>
<td style="background-color: #fea">
Genre of:
<xsl:value-of select="genre"/>
<xsl:text></xsl:text>
<xsl:value-of select="author"/>
presented
<xsl:value-of select="title"/>
和 published it in
<xsl:value-of select="publish_date"/>
. Here is small book description:
<xsl:text></xsl:text>
<xsl:value-of select="description"/>
<xsl:text></xsl:text>
</td>
</tr>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

3. The final variant 仅包括根据XSL模板格式化的XML基础的所需信息。

<table>
<tr>
<td style="background-color: #62e789">
类型:计算机Gambardella,Matthew提出了XML开发人员'引导并在2000-10-01发布了它。这是小书描述:深入了解使用XML创建应用程序。
</td>
</tr>
<tr>
<td style="background-color: #bd7aec">
类型:幻想团,金午夜雨并在2000-12-16播出了它。这是小书籍描述:前建筑师战斗公司僵尸,一个邪恶的女巫和她自己的童年成为世界女王。
</td>
</tr>
<tr>
<td style="background-color: #bd7aec">
类型:幻想珊瑚,伊娃提出了Maeve endendant,并在2000-11-17发表了它。这是小书籍描述:在英格兰的纳米技术协会崩溃后,年轻的幸存者为新社会奠定了基础。
</td>
</tr>
<tr>
<td style="background-color: #bd7aec">
类型:幻想珊瑚,伊娃提出了奥贝朗'S遗留并在2001-03-10发表了它。这是小书籍描述:在后期的obocalypse英格兰,只有奥贝朗有助于为伦敦居民创造新生活的神秘代理人。 Maeve endendant续集。
</td>
</tr>
<tr>
<td style="background-color: #bd7aec">
类型:幻想珊瑚珊瑚,伊娃展示了遮阳的格拉勒并在2001-09-10发表了它。这是小书籍描述:Maeve,Half-Sisters的两个女儿,互相争斗,控制英格兰。奥贝伦续集's Legacy.
</td>
</tr>
</table>

4. The 最终代码的视觉变体 根据类型,呈现为表格,它由颜色除以颜色。

类型:计算机Gambardella,Matthew提出了XML开发人员’引导并在2000-10-01发布了它。这是小书描述:深入了解使用XML创建应用程序。
类型:幻想团,金午夜雨并在2000-12-16播出了它。这是小书籍描述:前建筑师战斗公司僵尸,一个邪恶的女巫和她自己的童年成为世界女王。
类型:幻想珊瑚,伊娃提出了Maeve endendant,并在2000-11-17发表了它。这是小书籍描述:在英格兰的纳米技术协会崩溃后,年轻的幸存者为新社会奠定了基础。
类型:幻想珊瑚,伊娃提出了奥贝朗’S遗留并在2001-03-10发表了它。这是小书籍描述:在后期的obocalypse英格兰,只有奥贝朗有助于为伦敦居民创造新生活的神秘代理人。 Maeve endendant续集。
类型:幻想珊瑚珊瑚,伊娃展示了遮阳的格拉勒并在2001-09-10发表了它。这是小书籍描述:Maeve,Half-Sisters的两个女儿,互相争斗,控制英格兰。奥贝伦续集’s Legacy.
类型:浪漫兰德,辛西娅呈现了情人鸟,并在2000-09-02发表了它。这是小书描述:当卡拉在一个鸟类学会会议上遇到保罗时,夏天飞行时会飞行荷叶边。
类型:浪漫Thurman,Paula呈现了Splish Splash并在2000-11-02中发布了它。这是小书描述:深海潜水员发现真正的爱在海底的二万联赛。
类型:恐怖Knorr,Stefan展示了令人毛骨悚然的爬行,并在2000-12-06发表了它。这是小书描述:关于蟑螂,蜈蚣,蝎子和其他昆虫的恐怖故事的选集。
类型:科幻克拉克斯,彼得展示了悖论丢失并在2000-11-02中发表了它。这是小书描述:通过Heisenberg不确定性装置的无意识行程,詹姆斯萨利发现量子的问题。
类型:电脑o’Brien,Tim呈现了Microsoft .NET:编程圣经并在2000-12-09发布了它。这是小书描述:微软’在这个深刻的程序员中探讨了S .NET计划’s reference.
类型:电脑o’Brien,Tim展示了MSXML3:在2000-12-01中出版了一个全面的指南并发布了它。这是小书描述:Microsoft MSXML3解析器被详细介绍,注意XML DOM接口,XSLT处理,SAX等。
类型:电脑Galo,迈克呈现Visual Studio 7:在2001-04-16的综合指南和发布。以下是小型书籍描述:Microsoft Visual Studio 7深入探讨,查看Visual Basic,Visual C ++,C#和ASP +如何集成到全面的开发环境中。

区分<xsl:choose>  and <xsl:if>应该说我们使用<xsl:if>,当我们只有一个特定的条件时,但是当我们有更多条件时,我们使用选择。

您可以为两个模块使用XSL:

* 订单出口和进口 for 玛托托1Magento 2.,它广泛用于传输Magento版本和第三方软件之间的数据。

* 智能报道,这允许您一目了然地看到您的强大和弱势销售点,用户统计数据和其他有用的指标。我们在该模块中创建了统计数据的愿景,但也许您想要创建自己的和此目标,您可以使用XSL。

这个例子 “订单出口和进口”

/目标/ 很明显,当您对特定数据的提取至关重要,您有案例。现在,您将从Orders导出和导入扩展名导出XML文件。例如,您将XML文件与所有实体和字段都有,但您只需要客户电子邮件,小计,总计和递增ID。我们知道有时这些领域和实体令人困惑’s why we present the 桌子,介绍了最有用的实体和字段的定义。

1. The 基本XML文件,由Orders导出和导入扩展创建,包括有关一个订单的详细信息。

<orders>
<order>
<fields>
<increment_id>100000004</increment_id>
<created_at>
<![CDATA[ 2014-07-16 14:37:00 ]]>
</created_at>
<customer_email>
<![CDATA[ banderas@example.com ]]>
</customer_email>
<customer_firstname>
<![CDATA[ Antonio ]]>
</customer_firstname>
<customer_lastname>
<![CDATA[ Banderas ]]>
</customer_lastname>
<entity_id>6</entity_id>
<grand_total>872.0000</grand_total>
<order_currency_code>
<![CDATA[ USD ]]>
</order_currency_code>
<status>
<![CDATA[ complete ]]>
</status>
</fields>
<items>
<item>
<item_id>6</item_id>
<created_at>
<![CDATA[ 2014-07-16 14:37:00 ]]>
</created_at>
<product_id>166</product_id>
<product_type>
<![CDATA[ simple ]]>
</product_type>
<sku>
<![CDATA[ HTC Touch Diamond ]]>
</sku>
<name>
<![CDATA[ HTC Touch Diamond ]]>
</name>
<qty_ordered>1.0000</qty_ordered>
<price>800.0000</price>
<price_incl_tax>867.0000</price_incl_tax>
</item>
</items>
<addresses>
<address>
<region_id>43</region_id>
<postcode>10120</postcode>
<lastname>
<![CDATA[ Banderas ]]>
</lastname>
<street>
<![CDATA[ Attorney at Law 1556 Broadway, suite 416 ]]>
</street>
<city>
<![CDATA[ New York ]]>
</city>
<email>
<![CDATA[ banderas@example.com ]]>
</email>
<telephone>+651651654168</telephone>
<country_id>
<![CDATA[ US ]]>
</country_id>
<firstname>
<![CDATA[ Antonio ]]>
</firstname>
<address_type>
<![CDATA[ billing ]]>
</order>
</orders>

2.获取必要的实体和字段,创建一个 模板 在...的帮助下 XSL. 语。仅用于每个订单的所需实体和字段,使用<xsl:for-each> instrument.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<orders>
<xsl:for-each select="订单/order">
<order>
<fields>
<xsl:for-each select="领域">
<customer_email>
<xsl:value-of select="customer_email."/>
</customer_email>
<subtotal>
<xsl:value-of select="subtotal"/>
</subtotal>
<grand_total>
<xsl:value-of select="累计"/>
</grand_total>
<increment_id>
<xsl:value-of select="increntment_id."/>
</increment_id>
</xsl:for-each>
</fields>
<items>
<xsl:for-each select="项目/item">
<item>
<store_id>
<xsl:value-of select="store_id"/>
</store_id>
<item_id>
<xsl:value-of select=" 物品 _id."/>
</item_id>
<sku>
<xsl:value-of select=" 斯科 "/>
</sku>
<name>
<xsl:value-of select=" 姓名 "/>
</name>
</item>
</xsl:for-each>
</items>
</order>
</xsl:for-each>
</orders>
</xsl:template>
</xsl:stylesheet>

3. The 代码的最终视图 表示XSL模板中描述的实体和字段,其中包含来自Basic XML文件的信息。

<orders>
<order>
<fields>
<customer_email>banderas@example.com</customer_email>
<subtotal>800.0000</subtotal>
<grand_total>872.0000</grand_total>
<increment_id>100000004</increment_id>
</fields>
<items>
<item>
<store_id>1</store_id>
<item_id>6</item_id>
<sku>HTC Touch Diamond</sku>
<name>HTC Touch Diamond</name>
</item>
</items>
</order>
</orders>

实体 描述
<orders>
<order>
<fields>
<increment_id> 计算订单数量
<created_at> 创造日期
<customer_email> 电子邮件
<customer_firstname>
<customer_lastname> Lastaname.
<entity_id> 订单在数据库中的标识符
<grand_total> 最终订单成本
<order_currency_code> 货币,用于付款
<status> 订单的状态
</fields>
<items>
<item>
<item_id> 计算订单的项目数
<created_at> 项目创建日期
<product_id> 计算产品数量,使用作为订单的项目
<product_type> 产品类型
<sku> 商店保留单位
<name> 产品名称
<qty_ordered> 项目数量
<price> 物品的价格
<price_incl_tax> 价格包括税费
</item>
</items>
<addresses>
<address>
<region> 地区
<postcode> 邮政编码
<lastname>
<street> 街道
<city> 城市
<email> 电子邮件
<telephone> 电话
<country_id> 国家标识符
<firstname>
<address_type> 地址类型可以是:运输,结算
</address>
</addresses>
</order>
</orders>

此外,如果您想查看您可以使用的所有实体和字段 帮助文件.

您可以看到如何在Docker上设置Magento 2 在本文中.

我们正在等待您的反馈。让’表达了你的想法。我们相信,它对您有用。我们准备回答所有问题并随时帮助您。

Share

Aitoc是一支来自蓬勃发展的专业人士,提供强大 magento 2扩展。成立于2001年,AitoC为全球客户提供超过100个模块。公司不断发展,现在提供全方位的自定义电子商务开发服务。