xsl-list
[Top] [All Lists]

RE: Node implementation

2004-08-19 08:51:10

I'm trying to pass a XML node to a Java method in my XSLT:
(...)
      <xsl:variable name="xtabnode">
      <xsl:copy-of
select="document(concat('.\DicionarioXml\',$MasterTable,'.xml'
))/Estrutura/Tabelas/Tabela[Nome=$MasterTable]"/>
      </xsl:variable>

Why are you copying the document? Why not just pass it directly?, i.e.

<xsl:variable name="xtabnode">
  select="document(concat('.\DicionarioXml\',$MasterTable,'.xml'
          ))/Estrutura/Tabelas/Tabela[Nome=$MasterTable]"/>



      <xsl:attribute name="sqlInsert">
        <xsl:value-of select="sql:getStatement($MasterTable,
                                              $sql,
                                                $where,
                                                $where,
                                                $xtabnode,
                                                'I' )" />
      </xsl:attribute>
(...)

and after some tryes i can do this by declaring my method as

Calls from XSLT to Java depend on which XSLT processor you are using. You
need to tell us!

public static String getStatement(String aMasterTable, String 
aRowSource, String
aWhereOpen, String aWhereDelete, Node XMLTableDescriptor, 
String stype)

That's org.w3c.dom.Node . But to my (limited) knowledge, 
org.w3c.dom.Node is
just a Interface, so i must use some implementation of it. 

If the XSLT processor allows calls to a method that expects a Node, then it
will take care of the problem of deciding what Node implementation to use.
Your method doesn't need to know, so it's perfectly OK just to declare it as
Node.

Michael Kay



<Prev in Thread] Current Thread [Next in Thread>