// ShouldStrip evaluates the strip-space, preserve-space, and xml:space rules // and returns true if a node is a whitespace-only text node that should // be stripped. func (context *ExecutionContext) ShouldStrip(xmlNode xml.Node) bool { if xmlNode.NodeType() != xml.XML_TEXT_NODE { return false } if !IsBlank(xmlNode) { return false } //do we have a match in strip-space? elem := xmlNode.Parent().Name() ns := xmlNode.Parent().Namespace() for _, pat := range context.Style.StripSpace { if pat == elem { return true } if pat == "*" { return true } if strings.Contains(pat, ":") { uri, name := context.ResolveQName(pat) if uri == ns { if name == elem || name == "*" { return true } } } } //do we have a match in preserve-space? //resolve conflicts by priority (QName, ns:*, *) //return a value return false }