我有一个XSLT文件,以便转换大量的数据.我想加一个"分裂"的功能,无论是作为一个链接的XSLT或者当前XSLT,它可以创建多个输出文件,以便限制在一定的阈值的文件的大小之内.我们假设输入XML如下:
<People>
<Person>
<name>John</name>
<date>June12</date>
<workTime taskID="1">34</workTime>
<workTime taskID="2">12</workTime>
</Person>
<Person>
<name>John</name>
<date>June13</date>
<workTime taskID="1">21</workTime>
<workTime taskID="2">11</workTime>
</Person>
<Person>
<name>Jack</name>
<date>June19</date>
<workTime taskID="1">20</workTime>
<workTime taskID="2">30</workTime>
</Person>
</People>
Run Code Online (Sandbox Code Playgroud)
使用muenchian分组,XSLT文件如下所示.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="PersonTasks" match="workTime" use="concat(@taskID, ../name)"/>
<xsl:template match="/">
<People>
<xsl:apply-templates select="//workTime[generate-id() = generate-id(key('PersonTasks',concat(@taskID, ../name))[1])]"/>
</People>
</xsl:template>
<xsl:template match="workTime">
<xsl:variable name="taskID">
<xsl:value-of select="@taskID"/>
</xsl:variable>
<xsl:variable name="name">
<xsl:value-of select="../name"/>
</xsl:variable>
<Person>
<name>
<xsl:value-of select="$name"/>
</name>
<taskID>
<xsl:value-of select="$taskID"/>
</taskID>
<xsl:for-each select="//workTime[../name = $name][@taskID = $taskID]">
<workTime>
<date>
<xsl:value-of select="../date"/>
</date>
<time>
<xsl:value-of …Run Code Online (Sandbox Code Playgroud) 我想输出一段html代码.但我需要它是漂亮的印刷/缩进.没有使用<xsl:text>
</xsl:text>和有没有办法做到这一点<xsl:text>	</xsl:text>?
我使用了以下行没有任何结果.
<xsl:output method="html" indent="yes"/>
Run Code Online (Sandbox Code Playgroud)
Follwoing是c#代码;
XslCompiledTransform XSLT = new XslCompiledTransform();
XSLT.Load(xslPath);
using (XmlTextWriter writer = new XmlTextWriter(writePath, null))
{
if (isTopLevel)
{
XSLT.Transform(XMLDocumentForCurrentUser, writer);
}
else
{
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("MenuIndex", "", menuIndex);
XSLT.Transform(XMLDocumentForCurrentUser, xslArg, writer);
}
}
// I write the output to file
//All this works fine, only now I need the HTML to be readable (in the browser's view source or any notepad)
Run Code Online (Sandbox Code Playgroud)
有没有人知道格式化(至少缩进)XSLT输出的方法?
我做过研究,但是在操作属性时我只找到了解决方案.
我最近开始研究XSL.我想用它来将我的xml文件转换为html文件.我想要提取的数据应该显示有多少节点具有特定值.
XML具有以下结构:
<Tests>
<Test>
<TestName> a </TestName>
<Date> 12.11.10 </Date>
<Result> Fail </Result>
</Test>
<Test>
<TestName> b </TestName>
<Date> 13.11.10 </Date>
<Result> Fail </Result>
</Test>
<Test>
<TestName> c </TestName>
<Date> 14.11.10 </Date>
<Result> Pass </Result>
</Test>
</Tests>
Run Code Online (Sandbox Code Playgroud)
我想要的是:2(失败次数)1(通过次数)
任何人都可以帮我完成这个任务吗?
我正在尝试编写一个XPath,它将选择包含特定单词的某些节点.在这种情况下,这个词是"洛克伍德".正确的答案是3.这两条路径都给了我3个.
count(//*[contains(./*,'Lockwood')])
count(BusinessLetter/*[contains(../*,'Lockwood')])
Run Code Online (Sandbox Code Playgroud)
但是当我尝试输出每个特定节点的文本时
//*[contains(./*,'Lockwood')][1]
//*[contains(./*,'Lockwood')][2]
//*[contains(./*,'Lockwood')][3]
Run Code Online (Sandbox Code Playgroud)
节点1最终包含所有文本,节点2和3为空白.
有人可以告诉我发生了什么或我做错了什么.
谢谢.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="XPathFunctions.xsl"?>
<BusinessLetter>
<Head>
<SendDate>November 29, 2005</SendDate>
<Recipient>
<Name Title="Mr.">
<FirstName>Joshua</FirstName>
<LastName>Lockwood</LastName>
</Name>
<Company>Lockwood & Lockwood</Company>
<Address>
<Street>291 Broadway Ave.</Street>
<City>New York</City>
<State>NY</State>
<Zip>10007</Zip>
<Country>United States</Country>
</Address>
</Recipient>
</Head>
<Body>
<List>
<Heading>Along with this letter, I have enclosed the following items:</Heading>
<ListItem>two original, execution copies of the Webucator Master Services Agreement</ListItem>
<ListItem>two original, execution copies of the Webucator Premier Support for Developers Services Description between Lockwood …Run Code Online (Sandbox Code Playgroud) net.sf.saxon.TransformerFactoryImpl对多个 XML 文件进行一些转换。我想要做的(但不知道是否可行)是将一个变量传递给包含 XML 文件所在目录路径的样式表。我想从我的 Java 代码传递该变量。
<xsl:for-each
select="for $x in(collection('MYVAR?select=*.xml;recurse=yes'))
return saxon:discard-document($x)//testsuites">
Run Code Online (Sandbox Code Playgroud) 我的XML里面有一些html内容.以前我可以<xsl:copy-of select="customFields/customField[@name='mainContent']/html"/>用来将内容拉到正确的区域.一个新的要求是将<tr>每个表中的第一个转换<tbody>为一组thead/tr/th.
我对如何转换感到困惑,事实上甚至没有在哪里开始:
...
<customField name="mainContent" type="Html">
<html>
<h1>Page Heading</h1>
<p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te ullamcorper vel augue veniam. Nunc investigationes dolor iriure typi in.</p>
<p>Gusto te minim tempor elit quam. Dolore vel accumsan parum option me. Demonstraverunt congue nisl soluta tincidunt seacula. Soluta saepius demonstraverunt praesent claritatem mutationem. Modo te …Run Code Online (Sandbox Code Playgroud) 我试图从XML文档及其子代中提取多个元素,但我无法在任何地方找到有用的示例... MSDN非常模糊.这是.Net中的c#
我已经动态创建了这个XML并将其转换为字符串.我一直在尝试使用带有NodeList的XmlNode来遍历foreach部分中的每个文件,但它无法正常工作.
这是一些示例XML:
<searchdoc>
<results>
<result no = "1">
<url>a.com</url>
<lastmodified>1/1/1</lastmodified>
<description>desc1</description>
<title>title1</title>
</result>
<result no = "2">
<url>b.com</url>
<lastmodified>2/2/2/</lastmodified>
<description>desc2</description>
<title>title2</title>
</result>
</results>
</searchdoc>
Run Code Online (Sandbox Code Playgroud)
我需要拉出每条完整的路径 <result>
我将基于可扩展样式语言转换将XML文档转换为另一个XML文档.我在哪里可以找到关于如何在.NET中执行此操作的好教程?
我发现了一些关于如何使用开源工具进行操作的内容.但是.NET框架呢?只是其他一些快速问题......
有人可以给我一个关于XSLT操作顺序的快速而肮脏的解释吗?我对发生的事情仍然有点困惑?
是否有用于使用XSLT的显式.NET工具?我知道在使用XSLT,XSD和XML文件时,您会在Visual Studio .NET的主菜单上获得一个XML下拉列表.我想现在还可以,但是知道我是否有其他选择会很高兴.
我不会真正转换文件...好吧,我猜可扩展样式表将是一个文件,但我想导入一个XML字符串,将其转换为另一个XML字符串,然后通过它转换为一个视图MVC设计模式.我怎样才能做到这一点?
我在使用XSLT转换的java应用程序下工作.我有很多document()调用,所以有可能有java.lang.OutOfMemory异常(我实际上有),因为在每次调用document()函数之后,文档都会被缓存.
在http://xml.apache.org/xalan-j/faq.html#faq-N102F9,我读到可以增加堆内存大小,这在我的情况下不是解决方案.我也尝试使用似乎不支持的增量变换.
那么,有没有可能在使用document()函数时关闭jaxp中的文档缓存?
我正在努力找到在休斯顿工作的员工,但项目所在的部门并不在休斯顿.我试图在FLWOR表达式的这个示例之后对表达式进行建模,但是查询没有返回任何内容,它应该返回结果.
编辑:这是输入.
xquery
let $doc := doc("~path/company.xml")
for $e in $doc//employee,
$d in $doc//department,
$p in $doc//projects
where $d/locations[location!="Houston"]
and $p/project[plocations="Houston"]
return <e>{$e/fname}{$e/lname}{$e/address}</e>
/
Run Code Online (Sandbox Code Playgroud)