如何使用使用Xpath(php)更新文件?我的文件结构:
<?xml version="1.0" encoding="ISO-8859-1"?>
<PersonList>
<Person>
<Name>Sonu Kapoor</Name>
<Age>24</Age>
<Gender>M</Gender>
<PostalCode>54879</PostalCode>
</Person>
<Person>
<Name>Jasmin</Name>
<Age>28</Age>
<Gender>F</Gender>
<PostalCode>78745</PostalCode>
</Person>
<Person>
<Name>Josef</Name>
<Age>232</Age>
<Gender>F</Gender>
<PostalCode>53454</PostalCode>
</Person>
</PersonList>
Run Code Online (Sandbox Code Playgroud)
我需要更改值Age和Gender,其中name是"Jasmin".我尝试使用谷歌,但没有找到好的:(
尝试在XSLT中实现C#扩展函数时收到以下错误.
不支持具有CLR类型"Char []"的扩展函数参数或返回值.**
码:
<xsl:variable name="stringList">
<xsl:value-of select="extension:GetList('AAA BBB CCC', ' ')"/>
</xsl:variable>
<msxsl:script language="C#" implements-prefix="extension">
<![CDATA[
public string[] GetList(string str, char[] delimiter)
{
...
...
return str.Split(delimiter, StringSplitOptions.None);
}
]]>
</msxsl:script>
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个错误信息以及如何通过它吗?
编辑:我需要一个解决方案仍然允许我实现拆分功能并使用返回的数组.
谢谢!
当我使用“apply-templates”并选择一个变量序列时,模板是作用于序列中元素的上下文,还是作用于文档中元素的上下文?
在下面的例子中,它似乎要么做,要么不做,但我不明白为什么。
<root>
<a/>
<b/>
<c><a/></c>
<a/>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="root">
<!--this variable give me a sequence of "a" elements-->
<xsl:variable name="someElementA1" select="//a"/>
<xsl:variable name="someElementA2">
<xsl:copy-of select="//a"/>
</xsl:variable>
<xsl:for-each select="$someElementA1/a">
<xsl:element name="test">
<xsl:text>This is scenario 1: </xsl:text>
<xsl:apply-templates select="."/>
</xsl:element>
</xsl:for-each>
<xsl:for-each select="$someElementA2/a">
<xsl:element name="test">
<xsl:text>This is scenario 2: </xsl:text>
<xsl:apply-templates select="."/>
</xsl:element>
</xsl:for-each>
<xsl:element name="test">
<xsl:text>This is scenario 3: </xsl:text>
<xsl:apply-templates select="$someElementA1"/>
</xsl:element>
<xsl:element name="test">
<xsl:text>This is …Run Code Online (Sandbox Code Playgroud) XML,XSLT和XPath上可用的PostgreSQL材料是有限的.有PostgreSQL团队的官方文档,但这些文档只涉及几页内容,我从未相信他们的文档尽可能全面.
在网站上也有一些位和爆炸,但没有太多.
任何人都可以给我任何关于他们如何使用PostgreSQL 8.4中的XML功能,或指向任何隐藏的宝石博客帖子等的例子?
我对xpath()和xslt_process()函数特别感兴趣.
提前致谢!
我需要遍历字母az,并为每一个打印字母,然后放置一些我已经工作的代码,以显示我的数据库中以该字母开头的所有项目.目前,我正在使用选择来检索我显示的所有项目名称的第一个字母.但是,要求是显示所有字母,然后在没有项目的情况下显示"没有要显示的项目".所以,我不能再使用我的选择,它只返回有项目的字母.
我怎么能这样做,没有硬编码每个字母,然后在每个字母后调用我的模板26次?
我想输出一段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) 该函数normalize-space删除前导和尾随空格,并用单个空格替换空白字符序列.我怎么能只在XSLT 1.0单个空格替换一系列空白字符?例如"..x.y...\n\t..z."(为了便于阅读,用点替换的空格)应该成为".x.y.z.".
我试图动态地在Java中创建一个XML文件来显示时间表.我为我的XML文件创建了一个DTD,我有一个我想用来转换XML的XSL文件.我不确切知道如何继续.
我到目前为止所尝试的是点击一个按钮,调用一个Servlet,它生成XML文件内容的字符串(将XML的动态部分插入到String中.我现在有一个包含XML内容的String我现在想使用我服务器上的XSL文件转换XML文件,并在调用Servlet的页面中显示结果(通过AJAX执行此操作).
我不确定我是否在这个方向,也许我甚至不应该从一开始就以String形式创建XML代码.所以我的问题是,我如何从这里继续?如何使用XSL文件转换XML字符串,并将其作为对AJAX调用的响应发送,以便将生成的代码植入页面?或者,如果这不是这样做的,那么如何以不同的方式创建动态XML文件以产生相同的结果?