You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jk...@apache.org on 2002/08/16 20:35:27 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref/xni2dtm XNI2DTM.java XPath2Type.java

jkesselm    2002/08/16 11:35:27

  Modified:    java/src/org/apache/xml/dtm/ref/xni2dtm Tag: xslt20
                        XNI2DTM.java XPath2Type.java
  Log:
  Partial fix for ACCESSORS003
  
  Better handling of data() -- not all nodes have data() values. (Since we
  haven't defined Error, I'm returning Empty for now.)
  
  Still not getting quite the right value for non-schematyped Elements.
  Investigating why not.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.2.4.1.2.1 +21 -4     xml-xalan/java/src/org/apache/xml/dtm/ref/xni2dtm/Attic/XNI2DTM.java
  
  Index: XNI2DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/xni2dtm/Attic/XNI2DTM.java,v
  retrieving revision 1.2.4.1
  retrieving revision 1.2.4.1.2.1
  diff -u -r1.2.4.1 -r1.2.4.1.2.1
  --- XNI2DTM.java	14 Aug 2002 19:45:35 -0000	1.2.4.1
  +++ XNI2DTM.java	16 Aug 2002 18:35:27 -0000	1.2.4.1.2.1
  @@ -332,9 +332,9 @@
       return false;
     }
     
  -  /** ADDED FOR XPATH2: Retrieve the typed value(s), based on the schema type
  -   * 
  -   * %REVIEW% That may not be 
  +  /** ADDED FOR XPATH2: Retrieve the typed value(s), based on the schema type.
  +   * This is "the error value" for non-nodes, document, namespace, comment or 
  +   * processing instruction nodes.
      * */
     public DTMSequence getTypedValue(int nodeHandle)
     {
  @@ -347,13 +347,27 @@
       int identity=makeNodeIdentity(nodeHandle);
       if(identity==DTM.NULL)
         return DTMSequence.EMPTY;
  +      
  +    int nodetype=_type(identity);
  +    if(nodetype==DTM.DOCUMENT_NODE 
  +    	|| nodetype==DTM.NAMESPACE_NODE
  +    	|| nodetype==DTM.COMMENT_NODE
  +    	|| nodetype==DTM.PROCESSING_INSTRUCTION_NODE)
  +      return DTMSequence.EMPTY;
                   
       XPath2Type actualType=(XPath2Type)m_schemaTypeOverride.elementAt(identity);
       if(actualType==null)
         actualType=(XPath2Type)m_expandedNameTable.getSchemaType(m_exptype.elementAt(identity));
   
  +	// No schema type. Return as any.
       if(actualType==null)
  -      return DTMSequence.EMPTY;
  +    {
  +    	return new DTM_XSequence(getStringValue(nodeHandle).toString(),
  +    		(nodetype!=this.ELEMENT_NODE) 
  +    			?  XPath2Type.XSANYSIMPLETYPE
  +    			: XPath2Type.XSANYTYPE );
  +    }
  +
                   
           /* %REVIEW% Efficiency issues; value may be in FSB or scattered,
           	 in which case generating a Java String may arguably be wasteful. 
  @@ -363,6 +377,9 @@
           //GONK efficiency;
           
       // Gathers all text. Is that right? Should we not do if type is not known?
  +    //
  +    // %OPT% toString is needed because getStringValue returns an XString...
  +    // might be good to have a lower-level string accessor.
       String textvalue=getStringValue(nodeHandle).toString();
       
       // DTM node should provide the namespace context.
  
  
  
  1.1.2.1.2.1 +24 -1     xml-xalan/java/src/org/apache/xml/dtm/ref/xni2dtm/Attic/XPath2Type.java
  
  Index: XPath2Type.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/xni2dtm/Attic/XPath2Type.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.1.2.1
  diff -u -r1.1.2.1 -r1.1.2.1.2.1
  --- XPath2Type.java	14 Aug 2002 19:45:35 -0000	1.1.2.1
  +++ XPath2Type.java	16 Aug 2002 18:35:27 -0000	1.1.2.1.2.1
  @@ -81,6 +81,24 @@
      * */
   public class XPath2Type
   {
  +	/** Manefest constant: dtm.getTypedValue() wants to be able to return
  +	 * untyped values. Rather than trying to dig it out of the schema context, 
  +	 * it's easier to have one ready for use... */
  +	public static final XPath2Type XSSTRING=
  +		new XPath2Type(null,"http://www.w3.org/2001/XMLSchema","string");	
  +	/** Manefest constant: dtm.getTypedValue() wants to be able to return
  +	 * untyped values as strings, and needs a suitable type object. Rather
  +	 * than trying to dig it out of the schema context, it's easier to
  +	 * have one ready for use... */
  +	public static final XPath2Type XSANYTYPE=
  +		new XPath2Type(null,"http://www.w3.org/2001/XMLSchema","anyType");	
  +	/** Manefest constant: dtm.getTypedValue() wants to be able to return
  +	 * untyped values as strings, and needs a suitable type object. Rather
  +	 * than trying to dig it out of the schema context, it's easier to
  +	 * have one ready for use... */
  +	public static final XPath2Type XSANYSIMPLETYPE=
  +		new XPath2Type(null,"http://www.w3.org/2001/XMLSchema","anySimpleType");	
  +	
     	public XSTypeDefinition m_xniType;
     	public String m_namespace;
     	public String m_localName;
  @@ -201,8 +219,13 @@
     {
       Object value;
       DTM_XSequence seq=null;
  +    
  +    if(m_xniType==null)
  +    {
  +      seq=new DTM_XSequence(textvalue,this);
  +    }
   
  -    if(m_xniType instanceof XSSimpleTypeDefinition)
  +    else if(m_xniType instanceof XSSimpleTypeDefinition)
       {           
         //create an instance of 'ValidatedInfo' to get back information 
         //(like actual value, normalizedValue etc..)after content is validated.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org