在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应该知道.
我有一系列哈希,包含@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)
当我尝试设置它虽然双引号是这样逃避:
["Product1", "Product2",...,"Productn"]
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的事情来获取报价(.to_json等),但似乎没有任何效果.可能有一个非常简单的答案,但我找不到它是什么.
欢呼任何帮助.
我知道Cygwin安装时有一个批处理文件用于在Windows中启动它.但是,如果我想在不启动Cygwin并执行"./script"的情况下运行脚本
如何创建批处理文件来执行此操作?
在...中只有一个批处理文件,单击时打开Cygwin并运行shell脚本.
我是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]
我正在使用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)
我尝试了各种属性修改无济于事.我错过了一些明显的东西吗?
在使用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)
我希望,我没有用替换所有&符号进行预处理的输入&(如&question;更换所有),然后后期处理的输出&带&.
也许这是处理器特定的?我正在使用Saxon 9. …
鉴于:
<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)
但它会让元素有文字内容,是吗?我不要那个...
我想生成一个输入单词的句子.例如
输入:
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(词性)标记库,但它们没有指定它是主题还是对象.有任何建议如何做到这一点?也适用于使用多个对象,副词等更大的句子.
使用.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:
<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)