小编Dan*_*ley的帖子

如何在XSLT中输出当前元素路径?

在XSLT中,有没有办法在处理元素时确定XML文档的位置?

示例:给出以下XML Doc Fragment ...

<Doc>
  <Ele1>
    <Ele11>
      <Ele111>
      </Ele111>
    </Ele11>
  </Ele1>
  <Ele2>
  </Ele2>
</Doc>
Run Code Online (Sandbox Code Playgroud)

在XSLT中,如果我的上下文是元素"Ele111",我如何让XSLT输出完整路径?我希望它输出:"/ Doc/Ele1/Ele11/Ele111".

这个问题的上下文:我有一个非常大,非常深的文档,我想详尽地遍历(一般使用递归),如果我找到一个具有特定属性的元素,我想知道我在哪里找到它.我想我可以随身携带当前的路径,但我认为XSLT/XPath应该知道.

xml xslt xpath

24
推荐指数
2
解决办法
3万
查看次数

逃避" 在Rails和Javascript中

我有一系列哈希,包含@product_records中的产品数据.我可以使用map函数提取产品的名称,如下所示:

<%= @product_records.map{|x|x["Name"]} %>
Run Code Online (Sandbox Code Playgroud)

这就像这样呈现我想要的页面:

["Product1","Product2",...,"Productn"]
Run Code Online (Sandbox Code Playgroud)

我想尝试将其传递给javascript变量,以便我可以将其与JQuery自动完成一起使用.

var data = <%= @product_records.map{|x|x["Name"]} %>
Run Code Online (Sandbox Code Playgroud)

当我尝试设置它虽然双引号是这样逃避:

[&quot;Product1&quot;, &quot;Product2&quot;,...,&quot;Productn&quot;]
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的事情来获取报价(.to_json等),但似乎没有任何效果.可能有一个非常简单的答案,但我找不到它是什么.

欢呼任何帮助.

javascript jquery-ui ruby-on-rails-3

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

Cygwin从一个批处理文件运行脚本?

我知道Cygwin安装时有一个批处理文件用于在Windows中启动它.但是,如果我想在不启动Cygwin并执行"./script"的情况下运行脚本

如何创建批处理文件来执行此操作?

在...中只有一个批处理文件,单击时打开Cygwin并运行shell脚本.

bash cygwin batch-file

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

xml架构验证错误"前缀未绑定"

我是XML Schema的新手,我正在尝试降低基础知识.这是我的xml架构代码(filename:example1.xsd):

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sample="http://www.example" 
targetNamespace="http://www.example.com" 
elementFormDefault="qualified">

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="element1" type="xs:string"/>
      <xs:element name="element2" type="xs:string"/>
      <xs:element name="element3" type="xs:string"/>
      <xs:element name="element4" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

</xs:schema> 
Run Code Online (Sandbox Code Playgroud)

这是XML文档.

<?xml version="1.0" encoding="UTF-8"?>

<sample:school xmlns="http://www.example.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="./example1.xsd">

      <element1>hello</element1>
      <element2>hello</element2>
      <element3>hello</element3>
      <element4>hello</element4>

</sample:school>
Run Code Online (Sandbox Code Playgroud)

在尝试验证xml文件时,我收到来自netbeans的错误,其中说明:元素"sample:school"的前缀"sample"未绑定.[9]

xml xsd xsd-validation

18
推荐指数
2
解决办法
8万
查看次数

在XSL转换后保留PDF中的空格

我正在使用XSL转换将XML转换为PDF.不幸的是,它没有保留XML中的空格.例如:

我想转换这个:

Test Line Data         : 0xAA
Run Code Online (Sandbox Code Playgroud)

从XML到PDF.它在XML中看起来很好,它在Data和:)之间有9个空格,但在它显示的PDF中

Test Line Data : 0xAA
Run Code Online (Sandbox Code Playgroud)

这是我目前正在做的事情.在将数据写入XML之后,我将执行以下操作:

XPathDocument xPathDocDiag = new XPathDocument(this.FileNameDiagXml);
XslCompiledTransform xslTransDiag = new XslCompiledTransform();
XmlTextWriter xmlWriterDiag = new XmlTextWriter(outputFO, System.Text.Encoding.UTF8);
xslTransDiag.Transform(xPathDocDiag, null, xmlWriterDiag);
xmlWriterDiag.Flush();
xmlWriterDiag.Close();
Run Code Online (Sandbox Code Playgroud)

然后启动Apache FOP将FO转换为PDF.就像我说的那样,不幸的是,当我需要它时,白色空间不会被保留.我已经尝试手动添加XML(查找和替换)中的空格,它在转换后起作用,但是众所周知,文字&不能是XML,因此选项不在.我尝试过使用XmlReader,然后使用

<xsl:preserve-space elements="*"/>
Run Code Online (Sandbox Code Playgroud)

但同样,这也不起作用(没有错误或任何东西,只是不起作用).
XSL的部分看起来像这样:

<xsl:when test="Data != ''">
                <fo:table-cell text-align="left">
                    <fo:block />
                </fo:table-cell>
                <fo:table-cell text-align="left" number-columns-spanned="7">
                    <fo:block font-family="Courier New, Courier, monospace" font-size="9pt"><xsl:value-of select="Data" /></fo:block>
                </fo:table-cell>
            </xsl:when>
Run Code Online (Sandbox Code Playgroud)

我尝试了各种属性修改无济于事.我错过了一些明显的东西吗?

xml xsl-fo

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

使用XSLT转换XML时保留实体引用?

在使用XSLT(2.0)转换XML时,如何保留实体引用?使用我尝试过的所有处理器,默认情况下实体都会被解析.我可以xsl:character-map用来处理字符实体,但文本实体呢?

例如,这个XML:

<!DOCTYPE doc [
<!ENTITY so "stackoverflow">
<!ENTITY question "How can I preserve the entity reference when transforming with XSLT??">
]>
<doc>
  <text>Hello &so;!</text>
  <text>&question;</text>
</doc>
Run Code Online (Sandbox Code Playgroud)

使用以下XSLT进行转换:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

<doc>
   <text>Hello stackoverflow!</text>
   <text>How can I preserve the entity reference when transforming with XSLT??</text>
</doc>
Run Code Online (Sandbox Code Playgroud)

输出应该看起来像输入(减去现在的doctype声明):

<doc>
  <text>Hello &so;!</text>
  <text>&question;</text>
</doc>
Run Code Online (Sandbox Code Playgroud)

希望,我没有用替换所有&符号进行预处理的输入&amp;(如&amp;question;更换所有),然后后期处理的输出&amp;&.

也许这是处理器特定的?我正在使用Saxon 9. …

xml xslt xslt-2.0

9
推荐指数
1
解决办法
7405
查看次数

如何在XML模式中声明仅包含属性的元素?

鉴于:

<authentication password="turkey" partnerid="exam" />
Run Code Online (Sandbox Code Playgroud)

如何在XML模式中声明此元素?

我有:

<xs:element name="authentication" type="auth_type" />

<xs:complexType name ="auth_type">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="password" type="xs:string" />
      <xs:attribute name="partnerid" type="xs:string" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

但它会让元素有文字内容,是吗?我不要那个...

xml schema xsd

8
推荐指数
1
解决办法
6717
查看次数

nlg建一句话

我想生成一个输入单词的句子.例如

输入:

Mary
chase
the monkey
Run Code Online (Sandbox Code Playgroud)

输出:

Mary chases the monkey.
Run Code Online (Sandbox Code Playgroud)

这可以使用simpleNLG库来完成:http://code.google.com/p/simplenlg/,方法如下:

String subject = "Mary";
String verb = "chase";
String object = "the monkey";

p.setSubject(subject);
p.setVerb(verb);
p.setObject(object);

String output = realiser.realiseSentence(p);
System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

这将产生玛丽追逐猴子的句子.但是我想让它自动化,我输入单词并生成句子.这将需要一些预处理,该预处理将指定哪个单词是主语哪个单词是动词,哪个是对象.我知道有POS(词性)标记库,但它们没有指定它是主题还是对象.有任何建议如何做到这一点?也适用于使用多个对象,副词等更大的句子.

nlp

7
推荐指数
1
解决办法
3761
查看次数

关闭Saxon中的xml标头输出

使用.NET版本的Saxon 9.4,我运行一个命令行,如:

Query.exe -s:myfile.xml -qs:/cruisecontrol/build/msbuild[@success='true']/project[1]/target[@name='GetLatestSource']/message[last()]/text()
Run Code Online (Sandbox Code Playgroud)

我得到了一个结果

<?xml version="1.0" encoding="UTF-8"?>375
Run Code Online (Sandbox Code Playgroud)

如何关闭XML标头(省略XML声明)以便我得到375输出?我已经检查了文档,但也许我只是错过了它.

xml xpath saxon

7
推荐指数
1
解决办法
1320
查看次数

在xslt中创建序列号

输入XML:

<doc>
 <section>
  <para>Paragraph 1</para>
  <para>Paragraph 2</para>
  <para>Paragraph 3</para>
 </section>
  <para>Paragraph 4</para>
  <para>Paragraph 5</para>
  <para>Paragraph 6</para>
</doc>
Run Code Online (Sandbox Code Playgroud)

所需输出:

<book>
<section>
  <p class="para" id="0001">Paragraph 1</p>
  <p class="para" id="0002">Paragraph 2</p>
  <p class="para" id="0003">Paragraph 3</p>
 </section>
  <p class="para" id="0004">Paragraph 4</p>
  <p class="para" id="0005">Paragraph 5</p>
  <p class="para" id="0006">Paragraph 6</p>
 </book>
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下XSL,但我没有获得所需的输出.有人可以帮我吗?

<xsl:template match="para">
    <xsl:variable name="count" select="position()"/>
    <p class="para" id="{$count}">
        <xsl:apply-templates/>
    </p>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

<p class="para" id="2">Paragraph 1</p>
<p class="para" id="4">Paragraph 2</p>
<p class="para" id="6">Paragraph 3</p>

    <p class="para" id="4">Paragraph 4</p>
    <p class="para" id="6">Paragraph 5</p>
    <p …
Run Code Online (Sandbox Code Playgroud)

xml xslt xslt-2.0

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