subugoe/xmlinclude

在TYPO3中加载、转换和包含XML

安装: 321

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 11

分支: 2

公开问题: 1

语言:HTML

类型:typo3-cms-extension

3.0.0 2018-05-08 15:10 UTC

This package is auto-updated.

Last update: 2024-08-24 21:05:44 UTC


README

一个用于加载和转换插入到内容元素中的XML的TYPO3扩展。

2012-2013年由Sven-S. PorstSUB Göttingen <porst@sub.uni-goettingen.de>

如果您有任何问题或意见,请通过评论或贡献改进。您可以在github上分支扩展的存储库

要求

要运行此扩展,您需要

  • TYPO3 ≥ 6.2.0

描述

此扩展允许将远程XML内容包含到TYPO3内容元素中。它是通过以下3个步骤实现的:

1. 获取数据

基础URL数据可以从插件FlexForm中设置。那里给出的URL可以通过两种方式更改:

  1. a) 在tx_xmlinclude_xmlinclude[URL]参数中给出的路径将被附加到基础URL;当与RealURL一起使用时,这可以附加到页面的路径上
  2. b) 在plugin.tx_xmlinclude.settings.URLParameters TypoScript数组中设置的参数将合并到现有的URL参数中

默认情况下,如果无法将文件解析为XML,则获取文件将失败。如果您想获取非XML文件,如损坏的HTML或JSON,可以配置更宽容或不同的解析模式。

如果没有给出空白URL,则不会加载数据,并且将使用只包含“xmlinclude-root”节点的文档开始XSL处理。

2. 转换XML

在读取和解析数据后,可以使用XSL样式表进行转换。这些样式表的路径设置在plugin.tx_xmlinclude.settings.XSL TypoScript数组中。样式表将按数组中键的顺序应用。

以下场景是一个很好的例子:给定一个XHTML网页,您可以提供一个样式表,该样式表提取您感兴趣的内容并删除其余内容。然后,您可以应用另一个样式表,将XHTML内部的链接转换为指向您的TYPO3页面的链接。这样,您就可以在您的网站的设计和上下文中包含其他网络资源。

提供了一个功能,可以通过XSL函数解析可能由用户在表单字段中输入的附加XML。它调用如下:php:function('XmlUtility::parseXML', string($xml-string))

3. 将转换后的XML插入到网页中

xmlinclude内容元素创建一个div.xmlinclude并将转换后的XML放入其中。如果在转换过程中出现错误,将在该div的开始处插入h4.errorp.error元素以指示问题。

用法

  • 在您的页面上包含“包含XML”内容元素
  • 设置您页面的起始URL
  • 将“xmlinclude设置”模板添加到您的页面
  • (如有必要)调整XSL转换、CSS或JavaScript的TypoScript设置

配置

可以通过在plugin.tx_xmlinclude.settings中设置TypoScript值来调整多个设置

  • parser [xml]: 用于解析的类型。允许的设置有xml用于正确的XML解析、html用于不可靠的HTML解析,它容忍错误,以及json用于JSON解析,然后转换为XML文档。
  • XSL [{50 = EXT:xmlinclude/Resources/Private/XSL/rewrite-urls.xsl}]: 应用到下载的XML上的样式表路径数组。以下是对默认设置中使用的样式表的描述。在TypoScript中设置的值都将作为XSL参数传递给样式表。
  • URLParameters [{}]: 添加到请求URL中的参数数组。例如,如果您读取的服务需要格式=XML参数以提供XML格式,则可以设置plugin.tx_xmlinclude.settings.URLParameters.format = XML
  • headCSS [{}]: 应使用style标签包含在页面head中的CSS文件路径或URL数组。
  • headJavaScript [{}]: 应使用script标签包含在页面head中的样式表路径或URL数组。
  • rewriteOnClass [rewrite-on]: 用于在默认样式表中检测需要重写链接的a标签的类名字符串。
  • rewriteOffClass [rewrite-off]: 用于在默认样式表中检测不需要重写链接的a标签的类名字符串。
  • cookiePassthrough [{}]: 字符串列表。具有这些名称的Cookie在加载XML文件的连接和传递给浏览器的连接之间传递。
  • cookiePath [.]: 字符串。如果为.,则使用当前TYPO3页面的路径作为cookie路径。如果设置为字符串,则使用该字符串作为cookie路径。
  • useRealURL [0]: 使用RealURL将URL传递给扩展。有关进一步说明,请参阅RealURL部分。

默认样式表rewrite-urls.xsl

默认情况下,XSL处理包括rewrite-urls.xsl样式表。它期望在接收到的XML中找到XHTML(具有http://www.w3.org/1999/xhtml命名空间)或无命名空间的内容,并将以各种方式重写aformimgscriptlink标签的URL。

  • aform标签的URL
    • 在它们没有target属性的情况下重写,以通过TYPO3进行
      • 并且
      • 没有使用在rewriteOffClass TypoScript变量中设置的类名标记[默认为rewrite-on],并且
      • 是相对链接或主机名与目标站点相同的http(s)链接
    • 如果它们不满足上述条件或
      • 使用在rewriteOffClass TypoScript变量中设置的类名标记[默认为rewrite-off],则不会重写以通过TYPO3进行
      • 重写
  • imglinkscript标签中的URL将使用baseURL的内容进行预置,以创建绝对链接。baseURL由baseURL设置以及html/head/base/@href的内容确定,如果存在的话。

XSL参数

默认情况下,将传递一些参数到每个XSL

  • argument-*:带有名称的参数传递给xmlinclude扩展,其中*是键层次的短划线分隔列表(例如,tx_xmlinclude_xmlinclude[formParameters][xml]作为argument-formParameters-xml传递)
  • setting-*:在plugin.tx_xmlinclude.settings.中的TypoScript设置,其中*是键层次的短划线分隔列表
  • fullPageURL:不带参数的页面的完整URL
  • basePageURL:当前基础页面的URL(与页面ID对应的RealURL)
  • hostNamebasePageURL中的主机名
  • sitePath:到站点文件夹的完整路径(在主机的文件系统中,可以从XSL加载外部文件很有用)
  • 自定义:在plugin.tx_xmlinclude.settings.XSLParameters中配置的所有参数

RealURL

您可以使用RealURL将远程服务器上的路径透明地包含到您网站上的URL中。这有点不寻常,因为我们需要通过RealURL传递完整的路径,而RealURL通常会分割路径组件。为了处理这个问题,此设置将使用所有剩余的路径组件,如果其他扩展也添加了它们的重写路径组件,可能会引起问题。

要使用RealURL支持,首先在TypoScript中将其开启,使用

plugin.tx_xmlinclude.settings.useRealURL = 1

然后将以下数组添加到(或相关)RealURL配置中的fixedPostVars条目(例如$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT']['fixedPostVars']

array (
    'xmlinclude' => array (
        array(
            'GETvar' => 'tx_xmlinclude_xmlinclude[URL]',
            'userFunc' => 'EXT:xmlinclude/Classes/RealURL/tx_xmlinclude_realurl.php:&tx_xmlinclude_realurl->main'
        )
    ),
    '2' => 'xmlinclude',
)

这创建了一个只用于页面ID 2的xmlinclude设置。添加更多行

'3' => 'xmlinclude',
'73' => 'xmlinclude',
…

以启用页面ID 3、73等页面相同的重写。

版本历史

2.0.1 (2013-07-30):
  • 修复加载file:/// URL的bug
2.0.0 (2013-03-08):
  • 支持解析JSON(将其转换为XML)
  • 以HTML输出而不是XML
  • 允许在不加载外部数据的情况下使用,仅通过XSL驱动
  • 将TypoScript设置中的"parseAsHTML"替换为"parser":这可能会破坏现有的配置
  • 重命名XSL参数:用"argument-"前缀参数,用"setting-"前缀设置:这可能会破坏现有的样式表
  • 将完整的文件系统路径作为参数传递给网站
  • 提供XML解析作为XSL函数
  • 使用Fluid显示调试消息
  • 添加图标
  • 将文档转换为ReST
  • 添加假StarOffice手册文件
1.2.0 (2012-11-21):
  • 允许在FlexForm中使用更长的URL
  • 修复URL重写中错误插入斜杠的问题
1.1.0 (2012-09-24):
  • 使cookie路径可配置
  • 改进RealURL支持
  • 在rewrite-urls.xsl之后减少多余的斜杠
  • 不依赖于fed扩展
1.0.0 (2012-05-02):
  • 改进RealURL支持
  • 修复配置
  • 改进URL
  • 称为1.0
0.9.3 (2012-03-12):
  • 改进URL重写
  • 包括RealURL的设置
0.9.2 (2012-03-08):
  • 添加cookie处理
  • 添加GET和POST的表单处理
  • 解决HTML内容编码问题
0.9.1 (2012-03-07):
  • 解决HTML与XML解析的问题
0.9.0 (2012-03-01):
  • 初始beta版本

许可协议

MIT许可协议,以使需要它的人们满意。

版权(C)2012-2013 by Sven-S. Porst

特此授予任何人免费获得此软件及其相关文档文件(“软件”)副本(以下简称“软件”)的权利,在软件上进行不受限制的处理,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人进行上述行为,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

本软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是否因合同、侵权或其他行为而产生,源于、因或与软件或其使用或其他行为有关。

Array2XML.php类的许可协议

此扩展包括由Lalit Patel编写的Array2XML PHP类。它根据Apache License, Version 2.0授权。