小编Dim*_*hev的帖子

实现解析器的步骤和参与(在.Net中 - 在本例中为XPath 2.0)

在没有任何良好的免费XPath 2.0实现的.Net构建Linq到XML我已经考虑实现我自己(也是为了体验).但为了清楚(并没有构建存在的东西)这些是我发现的XPath 2.0实现:

  • 撒克逊.Net
  • 查询机器 - 我遇到了这个问题 - 示例中的例外情况
  • XQSharp - 可能不错,但是商业化(单个开发人员~300美元)

现在,我想要了解一些语言(如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和算法,但我一直在大学之前年(几年专业的工作-网站后台为主)的开发人员.

现在,解析的步骤和我倾向于涵盖的内容:

  1. Lex - 解析 - 减少:FsLex/FsYacc.我将首先正确地覆盖所有Xpath 2.0,但至少XPath 1.0可以做的更多+更多.
  2. 语义分析 - 我不确定这有多少
  3. 优化 - 我不倾向于覆盖这一点(至少在开始时不是这样)
  4. 实际行程等
  5. ...?

现在,除了上面的具体问题:

  1. 制作这么大的解析器有多难?根据我的背景,我可以吗?
  2. 有没有关于XPath 2.0的任何关键步骤?
  3. 有没有我错过的技术; 我是否必须覆盖XPath 2.0 XDocument等以上才能制作解析器?

要清楚:我想XDocument用这个解析的表达式创建一个XPath 2.0表达式解析器并遍历等.我猜这个组合是一个查询引擎.

更新:我发现了这个:http://www.w3.org/2007/01/applets/xpathApplet.html,其中包含解析和遍历的代码.我认为这将是一个很好的开始或参考:-)

您的回答将不胜感激.

.net f# xpath parsing fxsl

6
推荐指数
2
解决办法
866
查看次数

使用LibXML验证XML

目前,我使用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)

xml validation perl libxml2

6
推荐指数
1
解决办法
4665
查看次数

在查询生成的xml上添加命名空间

我尝试使用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)

xml sql namespaces xml-namespaces sql-server-2008

6
推荐指数
1
解决办法
1万
查看次数

XSLT为什么是
 出现在我的hrefs?

我有以下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="&#xA;                  http://dotnet.dynacal.com/customerlogin.asp?P=DEMO8">
                Login to View History of This Request
              </a>
Run Code Online (Sandbox Code Playgroud)

为什么&#xA;那里有所有的空间?我是XSLT的新手,我的谷歌搜索没有改变我理解的东西.谢谢,肖恩

xml xslt

6
推荐指数
2
解决办法
1万
查看次数

C#:如何导出到Excel电子表格?使用XSLT/LINQ /其他方法?

我需要能够导出从SQL Server 2008中的存储过程接收的一些数据.一旦返回数据,我需要能够输出它或将其导出到新的Excel电子表格.

这样做最简单的方法是什么,LINQ可以这样做吗?还是我被迫使用XSLT?我假设我必须首先转换返回到XML的数据然后应用XSLT - 因为XSLT对XML文档起作用.

VS 2008中没有XSLT 2,所以我们仍然需要使用XSLT 1 - 但这真的是最佳选择吗?

我认为可以使用替代方法,但也许我错了.

我真的很感激任何建议,教程等

谢谢

c# sql-server excel visual-studio

6
推荐指数
1
解决办法
2270
查看次数

Google Web Toolkit(GWT)+ XPath

我需要在GWT中评估XPath查询.我没有服务器端,所以我必须在我的GWT客户端应用程序中评估它们.

哪个是GWT最好的XPath库?

xml gwt xpath

6
推荐指数
1
解决办法
1996
查看次数

用于Perl的XSLT2.0处理器?

Perl有没有强大的XSLT2.0处理器?我刚尝试了XML :: LibXSLT,它不支持analyze-string,regex等.我害怕使用XML :: Saxon :: XSLT2来完成我的工作因为它使用Java而我不想添加那是我的依赖列表.你们用什么库来进行XSL2.0转换?

干杯,

xml xslt perl cpan

6
推荐指数
1
解决办法
1639
查看次数

在XSL中打破行

我试图使用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)

我让缩进="是",但这不起作用

xml xslt

6
推荐指数
1
解决办法
3万
查看次数

如何在xml和xslt之间进行转换处理时产生异常错误

我怀疑当我们在c#.net上进行任何进程时,如果有时会出现错误,那么我们会在错误日志中陷入错误

同样地,当假设我们在xml和xslt之间进行任何处理时,处理错误可能会导致我们如何捕获异常!

任何人都有一个想法...因为它将用于验证我,所以,请让我知道任何可能性.

c# xml xslt

6
推荐指数
1
解决办法
1081
查看次数

由于Xalan(XSLT)安全处理功能,Ant <junitreport>失败

我的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任务禁用安全处理功能(我不需要并且此时只是我的方式)但我不知道如何因为任务没有要禁用的属性它.或者我应该做些什么来使这项工作?

eclipse ant xslt xalan

6
推荐指数
1
解决办法
4156
查看次数