//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//------------------------------------------------------------------------------
using System.Diagnostics;
using System.IO;
using System.Xml.Xsl.Runtime;
namespace System.Xml.Xsl.Qil {
///
/// Data structure for storing whitespace rules generated by xsl:strip-space and xsl:preserve-space
///
internal class WhitespaceRule {
private string localName;
private string namespaceName;
private bool preserveSpace;
///
/// Allow derived classes to construct empty whitespace rule.
///
protected WhitespaceRule() {
}
///
/// Construct new whitespace rule.
///
public WhitespaceRule(string localName, string namespaceName, bool preserveSpace) {
Init(localName, namespaceName, preserveSpace);
}
///
/// Initialize whitespace rule after it's been constructed.
///
protected void Init(string localName, string namespaceName, bool preserveSpace) {
this.localName = localName;
this.namespaceName = namespaceName;
this.preserveSpace = preserveSpace;
}
///
/// Local name of the element.
///
public string LocalName {
get { return localName; }
set { localName = value; }
}
///
/// Namespace name (uri) of the element.
///
public string NamespaceName {
get { return namespaceName; }
set { namespaceName = value; }
}
///
/// True, if this element is whitespace-preserving.
/// False, if this element is whitespace-stripping.
///
public bool PreserveSpace {
get { return preserveSpace; }
}
///
/// Serialize the object to BinaryWriter.
///
public void GetObjectData(XmlQueryDataWriter writer) {
Debug.Assert(this.GetType() == typeof(WhitespaceRule), "Serialization of WhitespaceRule subclasses is not implemented");
// string localName;
writer.WriteStringQ(localName);
// string namespaceName;
writer.WriteStringQ(namespaceName);
// bool preserveSpace;
writer.Write(preserveSpace);
}
///
/// Deserialize the object from BinaryReader.
///
public WhitespaceRule(XmlQueryDataReader reader) {
// string localName;
this.localName = reader.ReadStringQ();
// string namespaceName;
this.namespaceName = reader.ReadStringQ();
// bool preserveSpace;
this.preserveSpace = reader.ReadBoolean();
}
}
}