在没有任何良好的免费XPath 2.0实现的.Net构建Linq到XML我已经考虑实现我自己(也是为了体验).但为了清楚(并没有构建存在的东西)这些是我发现的XPath 2.0实现:
现在,我想要了解一些语言(如XPath 2.0表达式)的实现有多困难.我发现这个链接有一个用于XPath 2.0表达式的EBNF:http://www.w3.org/TR/2007/REC-xpath20-20070123/#id-grammar我想在F#中使用它fslex/fsyacc组合.
我的背景(主观):我之前使用过这些工具,但仅限于一些简单的表达式和非常简单的编程语言.此外,我已经阅读了大部分Dragon书和Appel's Modern编译器在ML中的实现 - 但不幸的是,我还没有在阅读时将这个理论付诸实践.我现在已经一年学的是计算机科学,我已经完成了与理论关于前课程finite automaton,CFL和算法,但我一直在大学之前年(几年专业的工作-网站后台为主)的开发人员.
现在,解析的步骤和我倾向于涵盖的内容:
现在,除了上面的具体问题:
XDocument等以上才能制作解析器?要清楚:我想XDocument用这个解析的表达式创建一个XPath 2.0表达式解析器并遍历等.我猜这个组合是一个查询引擎.
更新:我发现了这个:http://www.w3.org/2007/01/applets/xpathApplet.html,其中包含解析和遍历的代码.我认为这将是一个很好的开始或参考:-)
您的回答将不胜感激.
目前,我使用XML :: LibXML perl模块根据定义的XML模式验证XML文件.目前,如果我的XML文件无法针对定义的XML Schema成功验证,我将得到一个错误列表通知我,例如某些元素不是预期的,然后是预期的.在我的XML文件中,我将有许多相同名称的元素,但它们可能嵌套在XML文件的不同位置.
我的问题是,无论如何,我可以在尝试执行验证时输出可能出错的任何元素的XPath位置吗?
目前,我的XML文件非常庞大,并且在验证失败时很难"调试"它,因为错误中显示的元素的名称可能会在XML文件的不同位置多次出现.
我的代码如下所示,使用LibXML根据模式验证XML文件.
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $schema_file = 'MySchema.xml';
my $document = 'MyFile.xml';
my $schema = XML::LibXML::Schema->new(location => $schema_file);
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file($document);
eval { $schema->validate($doc) };
die $@ if $@;
print "$document validated successfully\n";
Run Code Online (Sandbox Code Playgroud) 我尝试使用WITH XMLNAMESPACES在xml上添加命名空间.
当我执行我的查询时,命名空间添加了根元素,但是第二个元素我也有xmlns =""......我想删除它...
我提供了一个例子:
用于创建表和数据的查询:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](30) NOT NULL,
CONSTRAINT [PK_tblTest] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[tblTest] ON
INSERT [dbo].[tblTest] ([Id], [Name]) VALUES (1, N'Barack')
INSERT [dbo].[tblTest] ([Id], [Name]) VALUES (2, N'Nicolas')
INSERT [dbo].[tblTest] ([Id], [Name]) VALUES (3, …Run Code Online (Sandbox Code Playgroud) 我有以下XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" omit-xml-declaration="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<html>
<body>
<xsl:for-each select="AdvReqIMailMsg">
<a><xsl:attribute name="href">
http://<xsl:value-of select="BackSideUrl"/>/customerlogin.asp?P=<xsl:value-of select="DynaCalPath"/></xsl:attribute >
Login to View History of This Request
</a>
<br/>
</xsl:for-each>
</body>
</html>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
结果如下:
<a href="
 http://dotnet.dynacal.com/customerlogin.asp?P=DEMO8">
Login to View History of This Request
</a>
Run Code Online (Sandbox Code Playgroud)
为什么
那里有所有的空间?我是XSLT的新手,我的谷歌搜索没有改变我理解的东西.谢谢,肖恩
我需要能够导出从SQL Server 2008中的存储过程接收的一些数据.一旦返回数据,我需要能够输出它或将其导出到新的Excel电子表格.
这样做最简单的方法是什么,LINQ可以这样做吗?还是我被迫使用XSLT?我假设我必须首先转换返回到XML的数据然后应用XSLT - 因为XSLT对XML文档起作用.
VS 2008中没有XSLT 2,所以我们仍然需要使用XSLT 1 - 但这真的是最佳选择吗?
我认为可以使用替代方法,但也许我错了.
我真的很感激任何建议,教程等
谢谢
我需要在GWT中评估XPath查询.我没有服务器端,所以我必须在我的GWT客户端应用程序中评估它们.
哪个是GWT最好的XPath库?
Perl有没有强大的XSLT2.0处理器?我刚尝试了XML :: LibXSLT,它不支持analyze-string,regex等.我害怕使用XML :: Saxon :: XSLT2来完成我的工作因为它使用Java而我不想添加那是我的依赖列表.你们用什么库来进行XSL2.0转换?
干杯,
我试图使用XSL在XML文件中输出客户的liste,但值之间没有断行
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
encoding="ISO-8859-1"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="//client"/>
</xsl:template>
<xsl:template match="//client">
<xsl:value-of select="./nom/." />
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
输出是
DoeNampelluro
Run Code Online (Sandbox Code Playgroud)
我想要得到的
Doe
Nam
Pelluro
Run Code Online (Sandbox Code Playgroud)
我让缩进="是",但这不起作用
我怀疑当我们在c#.net上进行任何进程时,如果有时会出现错误,那么我们会在错误日志中陷入错误
同样地,当假设我们在xml和xslt之间进行任何处理时,处理错误可能会导致我们如何捕获异常!
任何人都有一个想法...因为它将用于验证我,所以,请让我知道任何可能性.
我的junit测试从我的Eclipse环境中通过ant 1.7运行,但是在执行junitreport任务时构建失败:
BUILD FAILED .../build.xml:222:应用转换时的错误:javax.xml.transform.TransformerException:java.lang.RuntimeException:使用扩展函数'xalan://org.apache.tools.ant.util当安全处理功能设置为true时,不允许使用.stringUtils:replace'.
我试图弄清楚如何使junitreport任务禁用安全处理功能(我不需要并且此时只是我的方式)但我不知道如何因为任务没有要禁用的属性它.或者我应该做些什么来使这项工作?