используйте это в вашем заголовочном файле.
<script>
var base_url = '<?php echo base_url(); ?>';
</script>
Я решил использовать статический названный класс XHtml
, это похоже на это:
public static class XHtml
{
static XHtml()
{
Namespace = "http://www.w3.org/1999/xhtml";
}
public static XNamespace Namespace { get; private set; }
public static XElement Element(string name)
{
return new XElement(Namespace + name);
}
public static XElement Element(string name, params object[] content)
{
return new XElement(Namespace + name, content);
}
public static XElement Element(string name, object content)
{
return new XElement(Namespace + name, content);
}
public static XAttribute Attribute(string name, object value)
{
return new XAttribute(/* Namespace + */ name, value);
}
public static XText Text(string text)
{
return new XText(text);
}
public static XElement A(string url, params object[] content)
{
XElement result = Element("a", content);
result.Add(Attribute("href", url));
return result;
}
}
Это, кажется, самый чистый способ сделать вещи, особенно как я могу затем добавить в стандартных программах удобства, такой как XHtml.A
метод (не весь мой класс показывают здесь).
Проблема, XName, используемый для создания XElement, должен указать корректное пространство имен. То, что я испытал бы желание сделать, создают статический класс как этот:-
public static class XHtml
{
public static readonly XNamespace Namespace = "http://www.w3.org/1999/xhtml";
public static XName Html { get { return Namespace + "html"; } }
public static XName Body { get { return Namespace + "body"; } }
//.. other element types
}
Теперь можно создать xhtml документ как этот:-
XDocument doc = new XDocument(
new XElement(XHtml.Html,
new XElement(XHtml.Body)
)
);
Альтернативный подход, к которому статический класс был бы:-
static class XHtml
{
public static readonly XNamespace Namespace = "http://www.w3.org/1999/xhtml";
public static readonly XName Html = Namespace + "html";
public static readonly XName Body = Namespace + "body";
}
Это имеет оборотную сторону инстанцирования всего возможного XName независимо от того, используете ли Вы их, но позитивный аспект является преобразованием Пространства имен + "tagname", только происходит однажды. Я не уверен, что это преобразование было бы оптимизировано иначе. Я уверен, что XNames только инстанцируются однажды:-
XNamepace n = "http://www.w3.org/1999/xhtml";
XNames x = n + "A";
XName y = n + "A";
Object.ReferenceEquals(x, y) //is true.
Я выбрал путь рекурсивной перезаписи. На самом деле вам не нужно «реконструировать» дерево. Вы можете просто поменять местами имена узлов ( XName
).
private static void ApplyNamespace(XElement parent, XNamespace nameSpace)
{
if(DetermineIfNameSpaceShouldBeApplied(parent, nameSpace))
{
parent.Name = nameSpace + parent.Name.LocalName;
}
foreach (XElement child in parent.Elements())
{
ApplyNamespace(child, nameSpace);
}
}