--- a/epoc32/include/xmlengattr.h Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/xmlengattr.h Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,192 @@
-xmlengattr.h
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Attribute node functions
+*
+*/
+
+
+
+
+
+
+
+#ifndef XMLENGINE_ATTR_H_INCLUDED
+#define XMLENGINE_ATTR_H_INCLUDED
+
+#include "xmlengnode.h"
+
+/**
+ * Instance of TXmlEngAttr class represents an XML attribute in the DOM tree.
+ *
+ * Is a storage attributes properties. Implements DOM action for it.
+ *
+ * @lib XmlEngineDOM.lib
+ * @since S60 v3.1
+ */
+class TXmlEngAttr : public TXmlEngNode
+{
+ public:
+ /**
+ * Default constructor
+ *
+ * @since S60 v3.1
+ */
+ inline TXmlEngAttr();
+
+
+ /**
+ * Clones attribute node
+ *
+ * @since S60 v3.1
+ * @return A copy of the attribute with its value
+ *
+ * @note Namespace of the attribute is reset; use
+ * TXmlEngNode::CopyToL(TXmlEngNode), which finds appropriate or creates
+ * new namespace declaration on the new parent node (argument should be
+ * an TXmlEngElement handle)
+ *
+ * @see CopyToL(TXmlEngNode)
+ */
+ IMPORT_C TXmlEngAttr CopyL() const;
+
+ /**
+ * Get owner element
+ *
+ * @since S60 v3.1
+ * @return TXmlEngElement that contains the attribute
+ *
+ * Same as TXmlEngNode::ParentNode() but returns TXmlEngElement
+ * instead of TXmlEngNode.
+ *
+ * @note Copies of attributes [TXmlEngAttr::CopyL()] and newly created
+ * attribute nodes [RXmlEngDocument::CreateAttributeL(..)] do not have
+ * parent element until they are attached to some element.
+ */
+ IMPORT_C const TXmlEngElement OwnerElement() const;
+
+ /**
+ * Check attribute name.
+ *
+ * @since S60 v3.1
+ * @return Local name of the attribute
+ *
+ * @note Equal to TXmlEngNode::Name(), but works faster.
+ *
+ * Never call this on NULL object!
+ * @see TXmlEngNode::Name()
+ */
+ IMPORT_C TPtrC8 Name() const;
+
+ /**
+ * Get element value.
+ *
+ * @since S60 v3.1
+ * @return Attribute's contents
+ *
+ * @note For values consisting of more then one TXmlEngTextNode node
+ * (as attribute's child) returns only the begining of the value;
+ * this happens when the value is represented by list of TXmlEngTextNode
+ * and TXmlEngEntityReference nodes.
+ *
+ * @see IsSimpleContents(), WholeValueCopyL()
+ */
+ IMPORT_C TPtrC8 Value() const;
+
+ /**
+ * Get copy of attribute content
+ *
+ * @since S60 v3.1
+ * @return Complex value of the attribute,
+ * probably consisting of text nodes and entity references
+ *
+ * Since the value may be composed from a set of TXmlEngTextNode
+ * and EntityRefernce nodes, the returned result is newly allocated
+ * string, which should be freed by caller.
+ *
+ * <B style="color: red">BE SURE TO FREE THE RESULT STRING!!!</B>
+ *
+ * Example usage of the API:
+ * @code
+ * RBuf8 value;
+ * attr.WholeValueCopyL(value);
+ * ...
+ * value.Close();
+ * @endcode
+ *
+ * @see TXmlEngAttr::Value(), TXmlEngNode::Value(),
+ * TXmlEngNode::IsSimpleTextContents(),
+ * TXmlEngNode::WholeTextContentsCopyL()
+ *
+ * @note In most cases using Value() is enough (and it needs no memory allocation).
+ * Use IsSimpleTextContents() if there doubts can Value() be used or not safely.
+ */
+ IMPORT_C void WholeValueCopyL(RBuf8& aBuffer) const;
+
+ /**
+ * Sets new value of the attribute. Provided new value will be escaped
+ * as needed.
+ *
+ * @ since S60 v3.1
+ * @param aNewValue A string value for the attribute
+ *
+ * The new value should not contain entity references.
+ * Entity references are not expanded, but used as text, because
+ * the ampersand (&) character of reference is escaped.
+ *
+ * @see SetEscapedValueL(const TDesC8&)
+ */
+ IMPORT_C void SetValueL(const TDesC8& aNewValue);
+
+ /**
+ * Sets new value from escaped XML character data that may contain
+ * entity references.
+ *
+ * The value as if it is an escaped contents from XML file.
+ * If the value contains entity references, then the resulting
+ * content of the attribute is a list of TXmlEngTextNode
+ * and TXmlEngEntityRefeerence nodes.
+ * Predefined entities are converted into characters they represent.
+ *
+ * @param aNewValue is a new attribute value
+ * @since S60 v3.1
+ *
+ * @see TXmlEngAttr::SetValueL(const TDesC8&)
+ */
+ IMPORT_C void SetEscapedValueL(const TDesC8& aNewValue);
+
+ /**
+ * Sets new attribute value exactly as presented in the string.
+ *
+ * Predefined entities are not converted into characters they represent.
+ *
+ * @param aNewValue is a new attribute value
+ * @since S60 v3.2
+ *
+ * @see TXmlEngAttr::SetValueL(const TDesC8&)
+ */
+ IMPORT_C void SetValueNoEncL(const TDesC8& aNewValue );
+
+protected:
+ /**
+ * Constructor
+ *
+ * @since S60 v3.1
+ * @param aInternal attribute pointer
+ */
+ inline TXmlEngAttr(void* aInternal);
+};
+
+#include "xmlengattr.inl"
+
+#endif /* XMLENGINE_ATTR_H_INCLUDED */