Struct xml::name::Name

source ·
pub struct Name<'a> {
    pub local_name: &'a str,
    pub namespace: Option<&'a str>,
    pub prefix: Option<&'a str>,
}
Expand description

Represents a qualified XML name.

A qualified name always consists at least of a local name. It can optionally contain a prefix; when reading an XML document, if it contains a prefix, it must also contain a namespace URI, but this is not enforced statically; see below. The name can contain a namespace without a prefix; in that case a default, empty prefix is assumed.

When writing XML documents, it is possible to omit the namespace URI, leaving only the prefix. In this case the writer will check that the specifed prefix is bound to some URI in the current namespace context. If both prefix and namespace URI are specified, it is checked that the current namespace context contains this exact correspondence between prefix and namespace URI.

§Prefixes and URIs

A qualified name with a prefix must always contain a proper namespace URI — names with a prefix but without a namespace associated with that prefix are meaningless. However, it is impossible to obtain proper namespace URI by a prefix without a context, and such context is only available when parsing a document (or it can be constructed manually when writing a document). Tying a name to a context statically seems impractical. This may change in future, though.

§Conversions

Name implements some From instances for conversion from strings and tuples. For example:

let n1: Name = "p:some-name".into();
let n2: Name = ("p", "some-name").into();

assert_eq!(n1, n2);
assert_eq!(n1.local_name, "some-name");
assert_eq!(n1.prefix, Some("p"));
assert!(n1.namespace.is_none());

This is added to support easy specification of XML elements when writing XML documents.

Fields§

§local_name: &'a str

A local name, e.g. string in xsi:string.

§namespace: Option<&'a str>

A namespace URI, e.g. http://www.w3.org/2000/xmlns/.

§prefix: Option<&'a str>

A name prefix, e.g. xsi in xsi:string.

Implementations§

source§

impl<'a> Name<'a>

source

pub fn to_owned(&self) -> OwnedName

Returns an owned variant of the qualified name.

source

pub fn local(local_name: &str) -> Name<'_>

Returns a new Name instance representing plain local name.

source

pub fn prefixed(local_name: &'a str, prefix: &'a str) -> Name<'a>

Returns a new Name instance with the given local name and prefix.

source

pub fn qualified( local_name: &'a str, namespace: &'a str, prefix: Option<&'a str> ) -> Name<'a>

Returns a new Name instance representing a qualified name with or without a prefix and with a namespace URI.

source

pub fn to_repr(&self) -> String

Returns a correct XML representation of this local name and prefix.

This method is different from the autoimplemented to_string() because it does not include namespace URI in the result.

source

pub fn repr_display(&self) -> ReprDisplay<'_, '_>

Returns a structure which can be displayed with std::fmt machinery to obtain this local name and prefix.

This method is needed for efficiency purposes in order not to create unnecessary allocations.

source

pub fn prefix_repr(&self) -> &str

Returns either a prefix of this name or namespace::NS_NO_PREFIX constant.

Trait Implementations§

source§

impl<'a> Clone for Name<'a>

source§

fn clone(&self) -> Name<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for Name<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> Display for Name<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> From<&'a str> for Name<'a>

source§

fn from(s: &'a str) -> Name<'a>

Converts to this type from the input type.
source§

impl<'a> From<(&'a str, &'a str)> for Name<'a>

source§

fn from((prefix, name): (&'a str, &'a str)) -> Name<'a>

Converts to this type from the input type.
source§

impl<'a> From<Name<'a>> for OwnedName

source§

fn from(n: Name<'a>) -> OwnedName

Converts to this type from the input type.
source§

impl<'a> Hash for Name<'a>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a> PartialEq for Name<'a>

source§

fn eq(&self, other: &Name<'a>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Copy for Name<'a>

source§

impl<'a> Eq for Name<'a>

source§

impl<'a> StructuralPartialEq for Name<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Name<'a>

§

impl<'a> RefUnwindSafe for Name<'a>

§

impl<'a> Send for Name<'a>

§

impl<'a> Sync for Name<'a>

§

impl<'a> Unpin for Name<'a>

§

impl<'a> UnwindSafe for Name<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.