[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Instance construction and use of a java.util.ArrayList

Subject: Instance construction and use of a java.util.ArrayList
From: Roger Martin <roger@xxxxxxxxxxxxxxxxx>
Date: Fri, 17 Aug 2012 11:02:46 -0400
 Instance construction and use of a java.util.ArrayList
Hi,

I'm using saxonb9-1-0-8j with jdk1.7.0_05 on Unbuntu 12.04 (64 bit) and Windows 7 (Home Premium 64 bit)

Attempting to use a java.util.ArrayList for going to another class needing a Java array. But first:

...in namespace area...
xmlns:KabschAlignment="java:org.openscience.cdk.geometry.alignment.KabschAlignment"
xmlns:cdkatom="java:org.openscience.cdk.Atom"
xmlns:Point3d="java:javax.vecmath.Point3d"
xmlns:ArrayList="java:java.util.ArrayList"
xmlns:date="java:java.util.Date"
.......
further along


.......
<xsl:variable name="primary-atom-list" select="ArrayList:new()"/>
<xsl:for-each select="./cml:molecule/cml:molecule/cml:atomArray/*">
<xsl:variable name="add" select="ArrayList:add($primary-atom-list, cdkatom:new(@elementType, Point3d:new(@x3, @y3, @z3)))"/>
</xsl:for-each>
<xsl:comment>
<xsl:text> primary atoms: </xsl:text>
<xsl:value-of select="$number-of-atoms"/>
<xsl:text> size: </xsl:text>
<xsl:value-of select="ArrayList:size($primary-atom-list)"/>
</xsl:comment>
.......
the size as printed in the comment is zero. I've tried simpler content for ArrayList and same zero. Also if the


....
<xsl:variable name="add" select="ArrayList:add($primary-atom-list, cdkatom:new(@elementType, Point3d:new(@x3, @y3, @z3)))"/>
....
is changed to


....
<xsl:value-of select="ArrayList:add($primary-atom-list, cdkatom:new(@elementType, Point3d:new(@x3, @y3, @z3)))"/>
....
a bunch of truetruetrue's arrive in output.


......
<xsl:variable name="primary-atom-list" select="ArrayList:new()"/>
<xsl:for-each select="./cml:molecule/cml:molecule/cml:atomArray/*">
<xsl:variable name="add" select="ArrayList:add($primary-atom-list, 'test with string')"/>
</xsl:for-each>
<xsl:comment>
<xsl:text> primary atoms: </xsl:text>
<xsl:value-of select="$number-of-atoms"/>
<xsl:text> size: </xsl:text>
<xsl:value-of select="ArrayList:size($primary-atom-list)"/>
</xsl:comment>
.......
leads to zero size as well. Tried a few add's in a row instead of the for-each loop and got zero size too.


Compiles and runs just fine. No errors or exceptions. The rest of the xsl works and completes.

Any ideas? Do I need to make a custom class to do the work?

The idea is to send two atom arrays into the KabschAlignment (which is a big algorithm not fitting xsl readily) to check for rmsd match of two chemicals or not:

--------
.<?xml version="1.0"?>
<!-- Collates nmr values to the starting chemical definition by selecting comparable candidate from the nmr cml document.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:divcon="http://quantumbioinc.com/schema/divcon"
xmlns:molecularmechanics="http://quantumbioinc.com/schema/molecularmechanics"
xmlns:cml="http://www.xml-cml.org/schema/cml2/core"
xmlns:ocml="http://www.xml-cml.org/schema"
xmlns:functx="http://www.functx.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://saxon.sf.net"
xmlns:KabschAlignment="java:org.openscience.cdk.geometry.alignment.KabschAlignment"
xmlns:cdkatom="java:org.openscience.cdk.Atom"
xmlns:Point3d="java:javax.vecmath.Point3d"
xmlns:ArrayList="java:java.util.ArrayList"
xmlns:date="java:java.util.Date"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://quantumbioinc.com/schema/divcon ../schemas/divcon.xsd"
version="2.0" extension-element-prefixes="saxon">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<!--xsl:strip-space elements="*"/-->
<xsl:param name="file-path" select="."/>


<xsl:function name="functx:is-value-in-sequence" as="xs:boolean"
              xmlns:functx="http://www.functx.com" >
<xsl:param name="value" as="xs:anyAtomicType?"/>
<xsl:param name="seq" as="xs:anyAtomicType*"/>

<xsl:sequence select="
   $value = $seq
 "/>

</xsl:function>

<xsl:template match="/">
<xsl:apply-templates select="./divcon:divcon"/>
</xsl:template>

<xsl:template match="divcon:divcon">
<xsl:element name="divcon:divcon" inherit-namespaces="yes">
<xsl:copy-of select="@*"/>
<xsl:namespace name="cml" select="'http://www.xml-cml.org/schema/cml2/core'"/>
<xsl:namespace name="xlink" select="'http://www.w3.org/1999/xlink'"/>
<xsl:copy-of select="./divcon:general-quantum-mechanics"/>
<xsl:copy-of select="./divcon:Hamiltonian"/>
<xsl:copy-of select="./divcon:geometry-optimization"/>
<xsl:copy-of select="./divcon:outputs"/>
<xsl:copy-of select="./divcon:charges"/>
<xsl:copy-of select="./divcon:heat-of-formation"/>
<xsl:copy-of select="./divcon:solvation-free-energy"/>
<xsl:copy-of select="./divcon:ionization-potential"/>
<xsl:copy-of select="./divcon:dipole-moment"/>
<xsl:copy-of select="./divcon:subsettings"/>
<xsl:copy-of select="./divcon:divcon/self-consistent-reaction-field"/>
<xsl:copy-of select="./divcon:divcon/nuclear-magnetic-resonance"/>
<xsl:apply-templates select="./cml:cml"/>
<xsl:apply-templates select="./divcon:benchmark-set"/>
<xsl:apply-templates select="./divcon:experimental-reference-set"/>
<xsl:copy-of select="./divcon:energyArray"/>
<xsl:copy-of select="./divcon:partial-chargeArray"/>
<xsl:copy-of select="./divcon:score-set"/>
<xsl:copy-of select="./divcon:computation-status"/>
</xsl:element>
</xsl:template>


<xsl:template match="cml:cml">
<xsl:variable name="number-of-atoms" select="count(./cml:molecule/cml:molecule/cml:atomArray/*)"/>
<xsl:variable name="primary-atom-list" select="ArrayList:new()"/>
<xsl:for-each select="./cml:molecule/cml:molecule/cml:atomArray/*">
<xsl:variable name="add" select="ArrayList:add($primary-atom-list, cdkatom:new(@elementType, Point3d:new(@x3, @y3, @z3)))"/>
</xsl:for-each>
<xsl:comment>
<xsl:text> primary atoms: </xsl:text>
<xsl:value-of select="$number-of-atoms"/>
<xsl:text> size: </xsl:text>
<xsl:value-of select="ArrayList:size($primary-atom-list)"/>
</xsl:comment>
<xsl:variable name="atom-array" select="document($file-path)/ocml:cml/ocml:molecule/*"/>
<xsl:for-each-group select="$atom-array" group-by="count(./atom) = $number-of-atoms">
<xsl:comment>
<xsl:if test="function-available('date:to-string') and
function-available('date:new')">
<p><xsl:value-of select="date:to-string(date:new())"/></p>
<xsl:text>


</xsl:text>
</xsl:if>
<xsl:value-of select="local-name(.)"/>
<xsl:text>: group </xsl:text>
<xsl:value-of select="count(./*)"/>
<xsl:text> name: </xsl:text>
<xsl:value-of select="name(./*[1])"/>
</xsl:comment>
<xsl:variable name="atom-list" select="ArrayList:new()"/>
<xsl:for-each select="./*">
<xsl:variable name="add" select="ArrayList:add($atom-list, cdkatom:new(@elementType, Point3d:new(@x3, @y3, @z3)))"/>
</xsl:for-each>
<xsl:variable name="kabsch-alignment" select="KabschAlignment:new(ArrayList:to-array($primary-atom-list), ArrayList:to-array($atom-list))"/>
<xsl:variable name="align" select="KabschAlignment:align($kabsch-alignment)"/>
<xsl:variable name="rmsd" select="KabschAlignment:get-RMSD($kabsch-alignment)"/>
<xsl:comment>
<xsl:text> cdk atoms: </xsl:text>
<xsl:value-of select="count($atom-list)"/>
<xsl:text> size: </xsl:text>
<xsl:value-of select="ArrayList:size($atom-list)"/>
<xsl:text> rmsd: </xsl:text>
<xsl:value-of select="$rmsd"/>
</xsl:comment>
</xsl:for-each-group>
</xsl:template>


<xsl:template match="divcon:benchmark-set">
<xsl:element name="divcon:benchmark-set" inherit-namespaces="yes">
<xsl:copy-of select="./divcon:reference-mark"/>
<xsl:copy-of select="./divcon:heat-of-formation"/>
<xsl:copy-of select="./divcon:solvation-free-energy"/>
<xsl:copy-of select="./divcon:ionization-potential"/>
<xsl:copy-of select="./divcon:dipole-moment"/>
</xsl:element>
</xsl:template>

<xsl:template match="divcon:experimental-reference-set">
<xsl:element name="divcon:experimental-reference-set" inherit-namespaces="yes">
<xsl:copy-of select="./divcon:heat-of-formation"/>
<xsl:copy-of select="./divcon:solvation-free-energy"/>
<xsl:copy-of select="./divcon:ionization-potential"/>
<xsl:copy-of select="./divcon:dipole-moment"/>
</xsl:element>
</xsl:template>


</xsl:stylesheet>
-------

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.