我的任务当前由SQL Server Reporting Services执行,它使用XSLT将数据集导出为XML格式,XSLT将典型架构转换为定制架构.为了替换此报告,我需要能够在用户想要下载时类似地转换XML.
XSLT产生的最终布局非常糟糕 - 它涉及填充和各种破坏性的连接,我宁愿不通过在从数据到XML的第一次转换中进行整个转换来重新发明轮子.
我的google-fu失败了我:如何使用R通过XSLT转换XML?
这是一个使用虹膜数据并将其转换为XML的脚本(我使用CRAN中的软件包纯粹是为了保持代码级别在示例中).然后我有一个XSLT(在gist上)当我在Visual Studio中运行XML时转换XML但我不知道如何将该活动转换为R.
library(optiRum)
library(XML)
irisdata<-convertToXML(iris)
saveXML(irisdata,"iris.xml")
Run Code Online (Sandbox Code Playgroud)
我认为你正在寻找Sxslt包,只是使用示例数据
library("Sxslt")
library("XML")
files <- sapply(c("sqrt.xml", "sqrt.xsl"), function(f) system.file("examples", f, package = "Sxslt"))
Run Code Online (Sandbox Code Playgroud)
files[1]xml文件在哪里,files[2]是xsl文件
xmlParse(files[[1]])
<?xml version="1.0"?>
<test>
<sqrt>9</sqrt>
<date/>
<code>mean(rnorm(10000))</code>
</test>
Run Code Online (Sandbox Code Playgroud)
然后使用Sxslt应用样式表
xsltApplyStyleSheet(files[1], files[2])
Run Code Online (Sandbox Code Playgroud)
给
$doc
<?xml version="1.0" standalone="yes"?>
<HTML>
<body>
sqrt: 3
pow: 81
date: Thu Jan 15 06:46:54 2015<i class="output">-0.0140224652198879</i>
substring: an(rnor</body>
</HTML>
$stylesheet
An object of class "XSLStyleSheet"
Slot "ref":
<pointer: 0x108ef2a60>
$status
OK
0
attr(,"class")
[1] "XMLInternalXSLTDocument"
Run Code Online (Sandbox Code Playgroud)
libxslt-dev在Linux机器上安装devtools::install_github("cboettig/Sxslt")它来安装它