BaseX:尝试在XQuery Update Facility中的名称空间之间移动元素

时间:2017-01-15 14:59:38

标签: xquery basex xquery-update

我想规范化XSD输入文件,将xs:放在任何没有xs: XQuery前面的XSD元素之前。

copy $c:=doc("test.xsd")
modify
(
  if($c/schema)
  then
  (
    for $item in $c//*
    where substring($item/text(), 1, 3) != "xs:"
    return rename node $item as concat("xs:", $item/text())
  )
  else ()
)
return $c

在没有xs:前缀的输入XSD上运行此xqy会使输入文件保持不变。我确实更新了$c并将其返回。那有什么不对?

输入文件:

<?xml version="1.0"?>
<schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<element name="note" type="xs:string"/>

</schema>

预期产出:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note" type="xs:string"/>

</xs:schema>
PS:看来我的问题引起了混乱。我需要xs:,因为我有另一个文本处理程序,它只处理带有xs:前缀的元素。

1 个答案:

答案 0 :(得分:1)

这应该有用(它与你的方法非常相似):

class ProductForm(forms.models.ModelForm):
    class Meta:
        model = Artikel
        localized_fields = '__all__'
        fields = ('price',)