小编Dan*_*ley的帖子

在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万
查看次数

如何在xquery中格式化小数?

我正在尝试在XQuery中格式化小数.小数是货币,因此格式应该是,###.##.

例如:

5573652.23 应该 5,573,652.23

和

352769应该352,769(或者352,769.00如果它更容易/更清洁)

现在我正在使用http://www.xqueryhacker.com/2009/09/format-number-in-xquery/中的这个函数,但我不能用它来使用小数:

declare function local:format-int($i as xs:int) as xs:string
{
  let $input :=
    if ($i lt 0) then fn:substring(fn:string($i), 2)
    else fn:string($i)
  let $rev := fn:reverse(fn:string-to-codepoints(fn:string($input)))
  let $comma := fn:string-to-codepoints(',')

  let $chars :=
    for $c at $i in $rev
    return (
      $c,
      if ($i mod 3 eq 0 and fn:not($i eq count($rev)))
      then $comma else ()
    )

  return fn:concat(
    if ($i lt 0) then '-' …
Run Code Online (Sandbox Code Playgroud)

xquery saxon number-formatting

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

Xslt到xsl-fo转换

我想对xsl-fo进行xslt转换,但我不确定我能做到这一点.我尝试将XML列表转换为xsl-fo列表.任何人都可以告诉我在哪里可以寻找我谷歌搜索很长一段时间没有很多这方面的例子.我的XML是这样的.

 <p>TEXT</p>
 <ul>
   <li>Item1</li>
   <li>Item2</li>
 </ul>
 <p>ANOTHERTEXT</p>
Run Code Online (Sandbox Code Playgroud)

我尝试使用模板进行此转换,但我的模板无法获得xsl-fo任何人都可以告诉我模板是否适用于此转换.如果他们工作可以告诉我一个例子,我找不到任何人.我的目标是得到一个pdf whit fop

谢谢


这是我的XML文档的一部分我在HTML中收集了源代码的一些部分,我将HTML更改为XML,现在我尝试将XML(在列表中)转换为XSL-FO中的XSLT.我的问题是我无法为这种转变提供模板.我最后的目标是获得一个pdf whit FOP.

谢谢

UPDATE

这是我的XML:

<Memoria>
  <name>TITLE</name>
  <Index>INDEX 2010</Index>
  <Seccion>
     <name>INFORMATION</name>
     <Contenido>
       <p>TEXT</p>
       <ul>
     <li>ITEM1</li>
     <li>ITEM2</li>
      </ul>
      <p>ANOTHER</p>
    </Contenido>
  </Seccion>
</Memoria>
Run Code Online (Sandbox Code Playgroud)

我正在测试你的解决方案谢谢大家

xml xslt xsl-fo

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

如何使用 ElementTree 在 xml 文件中搜索标签,其中我有一个具有特定值的“父”标签?(Python)

我刚开始学习 Python,必须编写一个程序来解析 xml 文件。我必须在 2 个不同的文件中找到一个名为 OrganisationReference 的标签并返回它。实际上,有多个具有此名称的标签,但只有一个,即我要返回的标签,它的 Tag OrganisationType 值为 DEALER 作为父标签(不太确定该术语是否正确)。我尝试为此使用 ElementTree。这是代码:

    import xml.etree.ElementTree as ET

    tree1 = ET.parse('Master1.xml')
    root1 = tree1.getroot()

    tree2 = ET.parse('Master2.xml')
    root2 = tree2.getroot()

    for OrganisationReference in root1.findall("./Organisation/OrganisationId/[@OrganisationType='DEALER']/OrganisationReference"):
        print(OrganisationReference.attrib)

    for OrganisationReference in root2.findall("./Organisation/OrganisationId/[@OrganisationType='DEALER']/OrganisationReference"):
        print(OrganisationReference.attrib)
Run Code Online (Sandbox Code Playgroud)

但这不返回任何内容(也没有错误)。有人可以帮助我吗?

我的文件看起来像这样:

  <MessageOrganisationCount>a</MessageOrganisationCount>
  <MessageVehicleCount>x</MessageVehicleCount>
  <MessageCreditLineCount>y</MessageCreditLineCount>
  <MessagePlanCount>z</MessagePlanCount>
  <OrganisationData>
      <Organisation>
          <OrganisationId>
              <OrganisationType>DEALER</OrganisationType>
              <OrganisationReference>WHATINEED</OrganisationReference>
          </OrganisationId>
          <OrganisationName>XYZ.</OrganisationName>
 ....
Run Code Online (Sandbox Code Playgroud)

由于 OrganisationReference 在这个文件中出现了几次,并且在开始和结束标签之间有不同的文本,我想得到你在第 9 行看到的那个:它有一个 OrganisationId 作为父标签,DEALER 也是一个OrganizationId 的子标签。

python xml xpath parsing elementtree

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

声明 DTD 元素类型时“-O”是什么意思?

根据 W3C XML规范,元素以以下形式声明:

[45]    elementdecl    ::=      '<!ELEMENT' S Name S contentspec S? '>'
[46]    contentspec    ::=      'EMPTY' | 'ANY' | Mixed | children
Run Code Online (Sandbox Code Playgroud)

w3school上的样本是:

 <!ELEMENT br EMPTY>
Run Code Online (Sandbox Code Playgroud)

但是在html 4.01 中严格的 dtd元素 br 是?

<!ELEMENT BR - O EMPTY                 -- forced line break -->
Run Code Online (Sandbox Code Playgroud)

为什么第二个声明要加上“-O”?这是什么意思?我在哪里可以找到有关此的官方文件?

xml sgml dtd

5
推荐指数
1
解决办法
662
查看次数

参考导向真的有用吗?

我必须使用FOP渲染一个pfd,然后旋转一些图像.然而,结果并不像我期望的那样.所以,这是我的问题(我在某种程度上无法找到一个好的文档来为我澄清这个问题):

如果我定义

fo:block-container reference-orientation="90" width="100" height="200"
Run Code Online (Sandbox Code Playgroud)

这将旋转整个容器(有效地导向尺寸为200x100的渲染框),还是只旋转容器的内容(使容器本身呈现尺寸为100x200)?

xsl-fo apache-fop

5
推荐指数
1
解决办法
4637
查看次数

创建自定义XSLT函数

我正在尝试创建自定义XSLT函数,但每次收到此错误时:

'非静态Java函数'compareCI'的第一个参数不是有效的对象引用.

  <xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:foo="http://whatever">

  <xsl:function name="foo:compareCI">
    <xsl:param name="string1"/>
    <xsl:param name="string2"/>
    <xsl:value-of select="compare(upper-case($string1),upper-case($string2))"/>
  </xsl:function>

  <xsl:template match="/">
      <xsl:value-of select="foo:compareCI('red','blue')"/>
  </xsl:template>

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

我希望你们中的某个人可以帮助我.非常感谢你们.

xslt function xslt-2.0

5
推荐指数
1
解决办法
6733
查看次数

XQuery中基于变量的动态排序(order by)

我正在尝试在XQuery中实现动态排序.我目前正在使用Saxon-PE 9.5进行开发,但是将在eXist和marklogic中使用XQuery(或xqueries复数),因此使用其模块/函数的任何答案都可以(并且希望其他数据库具有相应的模块/函数) .

排序基于包含一系列字符串的变量.序列中的每个字符串都是元素的名称和可选的"降序".

我已经尝试了多种方法,但无法按照预期的方式工作; 特别是对于二级种类.

在下面的示例中,排序是静态的,并且具有主要类型c(升序)和次要类型b(降序)...

so_xquery_question.xml

<doc>
    <foo id="foo1">
        <a>a1</a>
        <b>b1</b>
        <c>c0</c>
    </foo>
    <foo id="foo2">
        <a>a2</a>
        <b>b2</b>
        <c>c0</c>
    </foo>
    <foo id="foo3">
        <a>a3</a>
        <b>b3</b>
        <c>c3</c>
    </foo>
</doc>
Run Code Online (Sandbox Code Playgroud)

XQuery的

let $xml := doc('file:///C:/SO/so_xquery_question.xml')

return
<test>{
for $foo in $xml/doc/foo
order by $foo/c, $foo/b descending
return
    $foo
}</test>
Run Code Online (Sandbox Code Playgroud)

产量

<test>
   <foo id="foo2">
        <a>a2</a>
        <b>b2</b>
        <c>c0</c>
    </foo>
   <foo id="foo1">
        <a>a1</a>
        <b>b1</b>
        <c>c0</c>
    </foo>
   <foo id="foo3">
        <a>a3</a>
        <b>b3</b>
        <c>c3</c>
    </foo>
</test>
Run Code Online (Sandbox Code Playgroud)

输出正确排序; 首先是c(升序)然后是b(降序).

我的最新尝试部分有效.(在Saxon和marklogic中.由于某些未知原因(!@#$),它在eXist中的工作方式不同.)

这里是: …

xml sorting xquery marklogic exist-db

5
推荐指数
1
解决办法
2308
查看次数

Python:如何编辑XML文件的元素?

我有一个XML文件,该文件包含许多命名元素,每个元素nodes下面都有几个:

<name search = "select ARG: write">
    <version id = "1.0.0">
        <value>myVal</value>
        <method>myMethod</method>
    </version>
</name>
<name search = "select ARG: bla">
    <version id = "2.0.0">
        <value>myVal</value>
        <method>myMethod</method>
    </version>
</name>
Run Code Online (Sandbox Code Playgroud)

我想搜索这个XML文件,如果这个名称搜索值以select ARG(在我的示例中第一个值是select ARG: write)开头,我想创建这个新的命名元素,但这次的值应该select ARG: write是selected ARG: write。这是我尝试过的:

from xml.dom import minidom

xamlfile = r'C:\file.xml'
newxamlfile = r'C:\new.xml'

dom = minidom.parse(xamlfile)

# Fetch the desired elements in the tree.
res = dom.getElementsByTagName('name')

# Loop through all.
for …
Run Code Online (Sandbox Code Playgroud)

python xml

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

新手:XSLT 转换以验证 XML 文档中的规则

我是 XSLT 的新手。我有一个 XML 文档,我需要使用 xslt 来验证 XML 文档中的某些规则。XML 和 xsl 文件将在 xsltproc 工具中使用,输出将是一个简单的通过或失败。

示例 XML:

...

<Manager mincount="4" grade="10"...>
  <Employee id="1" grade="9" .... />
  <Employee id="2" grade="8" .... />
.....
</Manager>
Run Code Online (Sandbox Code Playgroud)
  1. Manager 下的子代数(在本例中为 Employee)必须等于或大于 mincount 属性的值。
  2. 所有员工的等级必须低于经理等级。

感谢你的帮助!蒂亚!

xml xslt transformation xml-validation

4
推荐指数
1
解决办法
6323
查看次数