Skip to content

Commit cbf85d2

Browse files
committed
Lower case tag names for XHTML.
1 parent dfd9d33 commit cbf85d2

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

src/AngleSharp.XPath.Tests/HtmlDocumentNavigatorTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using AngleSharp.Html.Parser;
44
using NUnit.Framework;
55
using System.Threading.Tasks;
6+
using AngleSharp.Dom;
67

78
namespace AngleSharp.XPath.Tests
89
{
@@ -116,5 +117,34 @@ public void SelectNodes_CanReturnAttribute()
116117
Assert.That(nodes, Has.Count.EqualTo(2));
117118
Assert.That(nodes, Is.All.InstanceOf<Dom.IAttr>());
118119
}
120+
121+
[Test]
122+
public void TestNameXPathFunctionOnXMLDoc()
123+
{
124+
// Arrange
125+
var xml = @"<html><head><title>Test</title></head><body><h1>Test</h1></body></html>";
126+
var angleSharpXmlDoc = new XmlParser().ParseDocument(xml);
127+
128+
// Act
129+
var xmlNav = angleSharpXmlDoc.CreateNavigator();
130+
131+
// Assert
132+
Assert.AreEqual(TagNames.Html, xmlNav.Evaluate("name()"));
133+
}
134+
135+
[Test]
136+
public void TestNameXPathFunctionOnHTMLDoc()
137+
{
138+
// Arrange
139+
var html = @"<html><head><title>Test</title></head><body><h1>Test</h1></body></html>";
140+
141+
var angleSharpHtmlDoc = new HtmlParser().ParseDocument(html);
142+
143+
// Act
144+
var htmlNav = angleSharpHtmlDoc.CreateNavigator();
145+
146+
// Assert
147+
Assert.AreEqual(TagNames.Html, htmlNav.Evaluate("name()"));
148+
}
119149
}
120150
}

src/AngleSharp.XPath/AngleSharp.XPath.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<Version>2.0.0-alpha-1</Version>
3+
<Version>2.0.0-alpha-2</Version>
44
<AssemblyVersion>2.0.0</AssemblyVersion>
5-
<FileVersion>2.0.0-alpha-1</FileVersion>
5+
<FileVersion>2.0.0-alpha-2</FileVersion>
66
<Authors>Denis Ivanov</Authors>
77
<PackageId>AngleSharp.XPath</PackageId>
88
<AssemblyName>AngleSharp.XPath</AssemblyName>
99
<RootNamespace>AngleSharp.XPath</RootNamespace>
10-
<TargetFramework>net5.0</TargetFramework>
10+
<TargetFrameworks>netstandard2.0;net46;net461;net472</TargetFrameworks>
1111
<Description>XPath support for AngleSharp</Description>
1212
<PackageProjectUrl>https://github.com/AngleSharp/AngleSharp.XPath/</PackageProjectUrl>
1313
<PackageLicenseExpression>MIT</PackageLicenseExpression>

src/AngleSharp.XPath/HtmlDocumentNavigator.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,23 @@ CurrentNode is IAttr attr
5252
: NameTable.GetOrAdd(CurrentNode is IElement e ? e.LocalName : string.Empty);
5353

5454
/// <inheritdoc />
55-
public override string Name =>
56-
CurrentNode is IAttr attr
57-
? NameTable.GetOrAdd(attr.Name)
58-
: NameTable.GetOrAdd(_currentNode.NodeName);
55+
public override string Name
56+
{
57+
get
58+
{
59+
if (CurrentNode is IAttr attr)
60+
{
61+
return NameTable.GetOrAdd(attr.Name);
62+
}
63+
64+
if (CurrentElement != null)
65+
{
66+
return NameTable.GetOrAdd(CurrentElement.LocalName);
67+
}
68+
69+
return NameTable.GetOrAdd(_currentNode.NodeName);
70+
}
71+
}
5972

6073
/// <inheritdoc />
6174
public override string NamespaceURI

0 commit comments

Comments
 (0)