Results 1 to 2 of 2

Thread: collada-dom: cannot add xmlns:math attribute to <COLLADA> ta

  1. #1
    Member
    Join Date
    Mar 2009
    Location
    Tokyo, Japan
    Posts
    88

    collada-dom: cannot add xmlns:math attribute to <COLLADA> ta

    From the collada exmples I've seen that include formulas, all of them use xmlns:math and include a

    xmlns:math="http://www.w3.org/1998/Math/MathML"

    attribute in the COLLADA tag. I've tried to do this in collada-dom with no success by:

    daeSafeCast<domCOLLADA>(doc->getDomRoot())->setAttribute("xmlns:math","http://www.w3.org/1998/Math/MathML");

    The problem is that collada-dom limits the attributes that could be set and *does not* allow a xmlns:math attribute. As a quick hack, I ended up modifying and using a local copy of collada-dom with the xmlns:math attribute properly added in domCOLLADA.cpp... but it would be great to find a solution that does not involve local changes.

    i also posted the bug report here:
    https://sourceforge.net/tracker/?func=d ... tid=805424
    Rosen Diankov
    Department of Mechano-Informatics, University of Tokyo
    http://openrave.org

  2. #2
    Junior Member
    Join Date
    Apr 2009
    Posts
    16

    Re: collada-dom: cannot add xmlns:math attribute to <COLLADA

    Hi,

    unfortunatly the code generator doesn't support the mathml namspace. So we changed the code, too.

    domFormula* formula = ...
    if(formula)
    {
    formula->setId(id.c_str());
    formula->setNSUri("http://www.w3.org/1998/Math/MathML");
    ...
    }
    Now the MathML Elements can be attached - don't forget to set the "mathml:" prefix for each MathML element
    Patch for current DOM attached

    ==
    Index: include/1.5/dom/domFormula.h
    ================================================== =================
    --- include/1.5/dom/domFormula.h (revision 844)
    +++ include/1.5/dom/domFormula.h (working copy)
    @@ -21,6 +21,7 @@
    xsID attrId;
    xsToken attrName;
    domSid attrSid;
    + xsToken attrNSUri;

    protected: // Elements
    domFormula_newparam_Array elemNewparam_array;
    @@ -65,6 +66,17 @@
    void setSid( domSid atSid ) { *(daeStringRef*)&attrSid = atSid;}

    /**
    + * Gets the sid attribute.
    + * @return Returns a domSid of the sid attribute.
    + */
    + xsToken getNSUri() const { return attrNSUri; }
    + /**
    + * Sets the sid attribute.
    + * @param atSid The new value for the sid attribute.
    + */
    + void setNSUri( xsToken atNSUri ) { *(daeStringRef*)&attrNSUri = atNSUri;}
    +
    + /**
    * Gets the newparam element array.
    * @return Returns a reference to the array of newparam elements.
    */
    @@ -98,7 +110,7 @@
    /**
    * Constructor
    */
    - domFormula(DAE& dae) : daeElement(dae), attrId(), attrName(), attrSid(), elemNewparam_array(), elemTarget(), elemTechnique_common(), elemTechnique_array() {}
    + domFormula(DAE& dae) : daeElement(dae), attrId(), attrName(), attrSid(), attrNSUri(), elemNewparam_array(), elemTarget(), elemTechnique_common(), elemTechnique_array() {}
    /**
    * Destructor
    */
    Index: src/1.5/dom/domFormula.cpp
    ================================================== =================
    --- src/1.5/dom/domFormula.cpp (revision 844)
    +++ src/1.5/dom/domFormula.cpp (working copy)
    @@ -91,6 +91,17 @@
    meta->appendAttribute(ma);
    }

    + // Add attribute: xmlns:mathml
    + {
    + daeMetaAttribute *ma = new daeMetaAttribute;
    + ma->setName( "xmlns:mathml" );
    + ma->setType( dae.getAtomicTypes().get("xsToken"));
    + ma->setOffset( daeOffsetOf( domFormula , attrNSUri ));
    + ma->setContainer( meta );
    +
    + meta->appendAttribute(ma);
    + }
    +
    meta->setElementSize(sizeof(domFormula));
    meta->validate();
    ==

    Regards

    Steffen

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •