Added ext:filter-by-id function.
authorFrederic Jolliton <frederic@jolliton.com>
Tue, 13 Sep 2005 06:27:36 +0000 (06:27 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Tue, 13 Sep 2005 06:27:36 +0000 (06:27 +0000)
 * Added ext:filter-by-id which is equivalent to .[@id=ARG]
git-archimport-id: frederic@jolliton.com--2005-main/tx--main--0.1--patch-39

xpathfn.py

index a88a96d..ca16df9 100644 (file)
@@ -139,6 +139,10 @@ def isAttribute( item ) :
 
        return isinstance( item , Attribute )
 
+def isElement( item ) :
+
+       return isinstance( item , Element )
+
 def isDocument( item ) :
 
        return isinstance( item , Document )
@@ -327,6 +331,17 @@ def extDescendantAttribute( context , arg ) :
                                                         for attribute in iterDescendantOrSelfFull( item )
                                                         if isAttribute( attribute ) and attribute.name == name )
 
+@registerFast( 'ext:filter-by-id' )
+def extFilterById( context , arg ) :
+
+       arg = asString( oneAtomizedItem( arg ) )
+       item = context.item
+       if isElement( item ) :
+               for attribute in item.attributes :
+                       if attribute.name == 'id' and attribute.dmStringValue() == arg :
+                               return Sequence( item )
+       return _Empty
+
 #--[ XPath/XQuery functions ]------------------------------------------------
 
 # XO/2.1