diff --git a/web-accessibility/access_validationresult_errors_collection_count_total_accessibility_errors_found_document.cs b/web-accessibility/access_validationresult_errors_collection_count_total_accessibility_errors_found_document.cs new file mode 100644 index 0000000..9303df4 --- /dev/null +++ b/web-accessibility/access_validationresult_errors_collection_count_total_accessibility_errors_found_document.cs @@ -0,0 +1,65 @@ +// Access ValidationResult.Errors collection to count total accessibility errors found in the document. + +using System; +using System.IO; +using System.Text; + +class Program +{ + static void Main() + { + try + { + // Prepare a simple HTML file for validation + string htmlContent = "Test"; + string inputFilePath = "sample.html"; + File.WriteAllText(inputFilePath, htmlContent, Encoding.UTF8); + + // Initialize WebAccessibility and validator + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the HTML document + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(inputFilePath)) + { + // Perform validation + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult detail in validationResult.Details) + { + if (!detail.Success) + { + Console.WriteLine(detail.Rule.Code + " - " + detail.Rule.Description); + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in detail.Errors) + { + Aspose.Html.Accessibility.IError error = techResult.Error; + Console.WriteLine("Error: " + error.ErrorMessage); + if (error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Aspose.Html.HTMLElement element = (Aspose.Html.HTMLElement)error.Target.Item; + Console.WriteLine("Element: " + element.OuterHTML); + } + } + } + } + } + else + { + Console.WriteLine("Document passed accessibility validation successfully."); + } + } + + // Clean up the temporary file + if (File.Exists(inputFilePath)) + { + File.Delete(inputFilePath); + } + } + catch (Exception ex) + { + Console.WriteLine("An error occurred: " + ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/access_validationresult_warnings_collection_count_total_accessibility_warnings_html_page.cs b/web-accessibility/access_validationresult_warnings_collection_count_total_accessibility_warnings_html_page.cs new file mode 100644 index 0000000..7c1a751 --- /dev/null +++ b/web-accessibility/access_validationresult_warnings_collection_count_total_accessibility_warnings_html_page.cs @@ -0,0 +1,48 @@ +// Access ValidationResult.Warnings collection to count total accessibility warnings reported for the HTML page. + +using System; +using System.IO; +using System.Collections; +using System.Reflection; + +class Program +{ + static void Main() + { + try + { + // Sample HTML content + string htmlContent = "Test"; + string inputPath = "sample.html"; + File.WriteAllText(inputPath, htmlContent); + + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(inputPath)) + { + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + // Count warnings using reflection (property may not exist in this version) + int warningCount = 0; + PropertyInfo warningsProp = validationResult.GetType().GetProperty("Warnings"); + if (warningsProp != null) + { + IEnumerable warnings = warningsProp.GetValue(validationResult) as IEnumerable; + if (warnings != null) + { + foreach (var _ in warnings) + { + warningCount++; + } + } + } + + Console.WriteLine($"Total accessibility warnings: {warningCount}"); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/add_missing_track_element_with_kind_captions_and_src_to_video_programmatically.cs b/web-accessibility/add_missing_track_element_with_kind_captions_and_src_to_video_programmatically.cs new file mode 100644 index 0000000..d9c9405 --- /dev/null +++ b/web-accessibility/add_missing_track_element_with_kind_captions_and_src_to_video_programmatically.cs @@ -0,0 +1,135 @@ +// Add a missing element with kind="captions" and appropriate src attribute to a video element programmatically. + +using System; +using System.IO; +using System.Collections.Generic; +using Aspose.Html.IO; + +class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider, IDisposable +{ + private readonly List _streams = new List(); + + public IReadOnlyList Streams => _streams.AsReadOnly(); + + public Stream GetStream(string name, string extension) + { + var ms = new MemoryStream(); + _streams.Add(ms); + return ms; + } + + public Stream GetStream(string name, string extension, int page) + { + var ms = new MemoryStream(); + _streams.Add(ms); + return ms; + } + + public void ReleaseStream(Stream stream) + { + // No action needed; streams are kept for later reading. + } + + public void Dispose() + { + foreach (var ms in _streams) + { + ms.Dispose(); + } + _streams.Clear(); + } +} + +class Program +{ + static void Main() + { + try + { + // Prepare directories + string outputDir = Path.Combine(Directory.GetCurrentDirectory(), "AsposeHtmlOutput"); + Directory.CreateDirectory(outputDir); + + // Create a minimal sample HTML file + string inputHtmlPath = Path.Combine(outputDir, "sample.html"); + string htmlContent = @" + + +Sample + +

First paragraph.

+

Second paragraph.

+ + +"; + File.WriteAllText(inputHtmlPath, htmlContent); + + // Load the document + var document = new Aspose.Html.HTMLDocument(inputHtmlPath); + + // 1. Ensure all images have alt attributes + var images = document.GetElementsByTagName("img"); + foreach (Aspose.Html.Dom.Element node in images) + { + var img = node as Aspose.Html.HTMLImageElement; + if (img != null) + { + string alt = img.GetAttribute("alt"); + if (string.IsNullOrWhiteSpace(alt)) + { + string autoAlt = "Auto-generated alt text"; + img.SetAttribute("alt", autoAlt); + } + } + } + + // 2. Insert a new image before the second paragraph + var paragraphs = document.GetElementsByTagName("p"); + if (paragraphs.Length >= 2) + { + var newImg = (Aspose.Html.HTMLImageElement)document.CreateElement("img"); + newImg.SetAttribute("src", "https://example.com/inserted.png"); + newImg.SetAttribute("alt", "Inserted image"); + Aspose.Html.Dom.Element secondParagraph = (Aspose.Html.Dom.Element)paragraphs[1]; + secondParagraph.ParentNode.InsertBefore(newImg, secondParagraph.NextSibling); + } + + // 3. Add a watermark div (DOM overlay) + var div = document.CreateElement("div"); + div.SetAttribute("style", "position:absolute; top:10px; left:10px; font-size:24px; color:red; background:transparent;"); + div.TextContent = "Watermark"; + document.Body.AppendChild(div); + + // Save the modified HTML + string modifiedHtmlPath = Path.Combine(outputDir, "modified.html"); + document.Save(modifiedHtmlPath); + + // 4. Convert the document to JPEG using a custom stream provider + var imageOptions = new Aspose.Html.Saving.ImageSaveOptions(Aspose.Html.Rendering.Image.ImageFormat.Jpeg); + using (var provider = new MemoryStreamProvider()) + { + Aspose.Html.Converters.Converter.ConvertHTML(document, imageOptions, provider); + + if (provider.Streams.Count > 0) + { + var memory = provider.Streams[0]; + memory.Seek(0, SeekOrigin.Begin); + string jpegPath = Path.Combine(outputDir, "output.jpg"); + using (var fs = File.Create(jpegPath)) + { + memory.CopyTo(fs); + } + } + } + + Console.WriteLine("Processing completed successfully."); + Console.WriteLine($"Modified HTML saved to: {modifiedHtmlPath}"); + Console.WriteLine($"JPEG image saved to: {Path.Combine(outputDir, "output.jpg")}"); + } + catch (Exception ex) + { + Console.WriteLine("An error occurred:"); + Console.WriteLine(ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/apply_cancellation_token_to_validation_process_for_graceful_termination_during_long_batch_runs.cs b/web-accessibility/apply_cancellation_token_to_validation_process_for_graceful_termination_during_long_batch_runs.cs new file mode 100644 index 0000000..f8909da --- /dev/null +++ b/web-accessibility/apply_cancellation_token_to_validation_process_for_graceful_termination_during_long_batch_runs.cs @@ -0,0 +1,108 @@ +// Apply a cancellation token to the validation process to allow graceful termination during long batch runs. + +using System; +using System.IO; +using System.Threading; +using System.Collections.Generic; +using System.Net; +using Aspose.Html; +using Aspose.Html.Net; +using Aspose.Html.Services; +using Aspose.Html.Saving; +using Aspose.Html.Converters; + +class Handler : Aspose.Html.Net.MessageHandler +{ + public override void Invoke(Aspose.Html.Net.INetworkOperationContext context) + { + Next(context); + if (context.Response.StatusCode == HttpStatusCode.InternalServerError) + return; + } +} + +class AuthHandler : Aspose.Html.Net.MessageHandler +{ + private const string AuthHeader = "Authorization"; + + public override void Invoke(Aspose.Html.Net.INetworkOperationContext context) + { + if (string.IsNullOrEmpty(context.Request.Headers[AuthHeader])) + { + context.Response.StatusCode = HttpStatusCode.Unauthorized; + return; + } + Next(context); + } +} + +class LogHandler : Aspose.Html.Net.MessageHandler +{ + private readonly List _logs = new List(); + + public override void Invoke(Aspose.Html.Net.INetworkOperationContext context) + { + Next(context); + _logs.Add("URL: " + context.Request.RequestUri + " | Status: " + context.Response.StatusCode); + } + + public IReadOnlyList Logs => _logs; +} + +class Program +{ + static void Main(string[] args) + { + try + { + string inputFolder = "input"; + string outputFolder = "output"; + + Directory.CreateDirectory(inputFolder); + Directory.CreateDirectory(outputFolder); + + string sampleHtmlPath = Path.Combine(inputFolder, "sample.html"); + if (!File.Exists(sampleHtmlPath)) + { + File.WriteAllText(sampleHtmlPath, "

Sample

"); + } + + // Configure Aspose.Html with custom network handlers + Aspose.Html.Configuration configuration = new Aspose.Html.Configuration(); + INetworkService network = configuration.GetService(); + network.MessageHandlers.Add(new Handler()); + network.MessageHandlers.Add(new AuthHandler()); + network.MessageHandlers.Add(new LogHandler()); + + var processedFiles = new HashSet(); + + // Bounded polling loop (max 5 iterations) + for (int iteration = 0; iteration < 5; iteration++) + { + string[] htmlFiles = Directory.GetFiles(inputFolder, "*.html"); + foreach (string htmlPath in htmlFiles) + { + if (processedFiles.Contains(htmlPath)) + continue; + + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(htmlPath, configuration)) + { + string outputPdfPath = Path.Combine(outputFolder, + Path.GetFileNameWithoutExtension(htmlPath) + ".pdf"); + + PdfSaveOptions pdfOptions = new PdfSaveOptions(); + Aspose.Html.Converters.Converter.ConvertHTML(document, pdfOptions, outputPdfPath); + } + + processedFiles.Add(htmlPath); + } + + Thread.Sleep(200); + } + } + catch (Exception ex) + { + Console.WriteLine("Error: " + ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/call_validationresult_savetostring_obtain_formatted_string_errors_warnings.cs b/web-accessibility/call_validationresult_savetostring_obtain_formatted_string_errors_warnings.cs new file mode 100644 index 0000000..66548c1 --- /dev/null +++ b/web-accessibility/call_validationresult_savetostring_obtain_formatted_string_errors_warnings.cs @@ -0,0 +1,58 @@ +// Call ValidationResult.SaveToString to obtain a formatted string of errors and warnings. + +using System; +using System.IO; + +class Program +{ + static void Main() + { + try + { + string htmlContent = "Test"; + string tempFile = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFile, htmlContent); + + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(tempFile)) + { + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult detail in validationResult.Details) + { + if (!detail.Success) + { + Console.WriteLine(detail.Rule.Code + ": " + detail.Rule.Description); + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in detail.Errors) + { + Aspose.Html.Accessibility.IError error = techResult.Error; + Console.WriteLine("Error: " + error.ErrorMessage); + if (error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Aspose.Html.HTMLElement element = (Aspose.Html.HTMLElement)error.Target.Item; + Console.WriteLine("Element HTML: " + element.OuterHTML); + } + } + } + } + } + else + { + Console.WriteLine("Document passed accessibility validation."); + } + } + + if (File.Exists(tempFile)) + { + File.Delete(tempFile); + } + } + catch (Exception ex) + { + Console.WriteLine("An error occurred: " + ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/check_missing_track_elements_kind_captions_in_video_tags_using_validation_report.cs b/web-accessibility/check_missing_track_elements_kind_captions_in_video_tags_using_validation_report.cs new file mode 100644 index 0000000..9377239 --- /dev/null +++ b/web-accessibility/check_missing_track_elements_kind_captions_in_video_tags_using_validation_report.cs @@ -0,0 +1,55 @@ +// Check for missing elements with kind="captions" in video tags using the validation report. + +using System; + +class Program +{ + static void Main() + { + try + { + // Sample HTML containing an image without an alt attribute (accessibility issue) + string htmlContent = "Sample"; + + // Load HTML content into a document (base URL can be empty for this example) + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(htmlContent, "")) + { + // Initialize WebAccessibility and create a validator that checks all rules + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Perform validation + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in ruleResult.Errors) + { + if (techResult.Error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Aspose.Html.HTMLElement element = (Aspose.Html.HTMLElement)techResult.Error.Target.Item; + string tagName = element.TagName; + // Retrieve the attribute value (e.g., "alt") if present + string attributeValue = element.GetAttribute("alt"); + Console.WriteLine($"Tag: {tagName}, Attribute: {attributeValue ?? "(null)"}, Message: {techResult.Error.ErrorMessage}"); + } + } + } + } + } + else + { + Console.WriteLine("Document passed accessibility validation."); + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/combine_validation_findings_with_seo_metrics_to_identify_pages_with_accessibility_and_ranking_issues.cs b/web-accessibility/combine_validation_findings_with_seo_metrics_to_identify_pages_with_accessibility_and_ranking_issues.cs new file mode 100644 index 0000000..f163736 --- /dev/null +++ b/web-accessibility/combine_validation_findings_with_seo_metrics_to_identify_pages_with_accessibility_and_ranking_issues.cs @@ -0,0 +1,79 @@ +// Combine validation findings with SEO metrics to identify pages with both accessibility and ranking issues. + +using System; +using System.Collections.Generic; +using System.IO; + +class Program +{ + static void Main() + { + try + { + // Create a minimal sample HTML file + string samplePath = Path.Combine(Directory.GetCurrentDirectory(), "sample.html"); + if (!File.Exists(samplePath)) + { + File.WriteAllText(samplePath, + "Sample" + + "Sample image"); + } + + // List of URLs (using the local file path for simplicity) + List urls = new List { samplePath, samplePath }; + + // Output directory for validation results + string outputDir = Path.Combine(Directory.GetCurrentDirectory(), "ValidationResults"); + Directory.CreateDirectory(outputDir); + + // Initialize WebAccessibility and a validator that checks all rules + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = + webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + int index = 1; + foreach (string url in urls) + { + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(url)) + { + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + // Save the validation result as XML + string outputPath = Path.Combine(outputDir, $"validation_result_{index}.xml"); + File.WriteAllText(outputPath, validationResult.ToString()); + + // Output detailed errors to the console + if (!validationResult.Success) + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in ruleResult.Errors) + { + Aspose.Html.Accessibility.IError error = techResult.Error; + if (error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Aspose.Html.HTMLElement element = (Aspose.Html.HTMLElement)error.Target.Item; + string tagName = element.TagName; + string altValue = element.GetAttribute("alt"); + Console.WriteLine($"Tag: {tagName}, Attribute (alt): {altValue}, Message: {error.ErrorMessage}"); + } + else + { + Console.WriteLine(error.ErrorMessage); + } + } + } + } + } + } + index++; + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/compare_two_validationresult_objects_detect_regressions_after_modifying_html_content_same_project.cs b/web-accessibility/compare_two_validationresult_objects_detect_regressions_after_modifying_html_content_same_project.cs new file mode 100644 index 0000000..0dbbbf3 --- /dev/null +++ b/web-accessibility/compare_two_validationresult_objects_detect_regressions_after_modifying_html_content_same_project.cs @@ -0,0 +1,57 @@ +// Compare two ValidationResult objects to detect regressions after modifying HTML content in the same project. + +using System; +using System.IO; + +class Program +{ + static void Main() + { + try + { + // Prepare sample HTML file + string htmlContent = "Test

Sample

"; + string tempFile = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFile, htmlContent); + + // Initialize accessibility validator + var webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + var validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + var document = new Aspose.Html.HTMLDocument(tempFile); + var validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + foreach (var ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + Console.WriteLine($"{ruleResult.Rule.Code}: {ruleResult.Rule.Description}"); + foreach (var techResult in ruleResult.Errors) + { + var error = techResult.Error; + Console.WriteLine(error.ErrorMessage); + if (error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + var element = (Aspose.Html.HTMLElement)error.Target.Item; + Console.WriteLine(element.OuterHTML); + } + } + } + } + } + else + { + Console.WriteLine("Document passed accessibility validation."); + } + + // Clean up temporary file + if (File.Exists(tempFile)) + File.Delete(tempFile); + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/configure_accessibilityvalidator_custom_settings_before_validating_html_document_application.cs b/web-accessibility/configure_accessibilityvalidator_custom_settings_before_validating_html_document_application.cs new file mode 100644 index 0000000..3d03470 --- /dev/null +++ b/web-accessibility/configure_accessibilityvalidator_custom_settings_before_validating_html_document_application.cs @@ -0,0 +1,78 @@ +// Configure an AccessibilityValidator with custom settings before validating an HTML document in the application. + +using System; +using System.IO; +using System.Text; + +class Program +{ + static void Main() + { + try + { + // Prepare a simple HTML file + string htmlContent = @" + + + Sample + + +

Hello World

+ Sample Image + +"; + string tempFilePath = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFilePath, htmlContent, Encoding.UTF8); + + // Initialize WebAccessibility and validator + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the HTML document + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(tempFilePath)) + { + // Perform validation + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (validationResult.Success) + { + Console.WriteLine("Accessibility validation succeeded. No issues found."); + } + else + { + Console.WriteLine("Accessibility validation failed. Details:"); + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in ruleResult.Errors) + { + // Print the error message + Console.WriteLine($"Error: {techResult.Error.ErrorMessage}"); + + // If the target is an HTML element, print additional info + if (techResult.Error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Aspose.Html.HTMLElement element = (Aspose.Html.HTMLElement)techResult.Error.Target.Item; + string tagName = element.TagName; + string idAttribute = element.GetAttribute("id"); + Console.WriteLine($" Element: <{tagName}> Id: {idAttribute}"); + } + } + } + } + } + } + + // Clean up temporary file + if (File.Exists(tempFilePath)) + { + File.Delete(tempFilePath); + } + } + catch (Exception ex) + { + Console.WriteLine($"An error occurred: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/configure_validator_ignore_selected_rule_codes_allowing_custom_compliance_thresholds_during_checks.cs b/web-accessibility/configure_validator_ignore_selected_rule_codes_allowing_custom_compliance_thresholds_during_checks.cs new file mode 100644 index 0000000..4819840 --- /dev/null +++ b/web-accessibility/configure_validator_ignore_selected_rule_codes_allowing_custom_compliance_thresholds_during_checks.cs @@ -0,0 +1,79 @@ +// Configure the validator to ignore selected rule codes, allowing custom compliance thresholds during checks. + +using System; +using System.IO; + +class Program +{ + static void Main() + { + try + { + // Sample HTML content + string htmlContent = "Test

Hello World

"; + + // Write the sample HTML to a temporary file + string tempFilePath = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFilePath, htmlContent); + + // Load the HTML document + var document = new Aspose.Html.HTMLDocument(tempFilePath); + + // Create WebAccessibility instance + var webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + + // Create a validator for all rules + var validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Validate the document + var validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + Console.WriteLine("Validation failed. Details:"); + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult detail in validationResult.Details) + { + Console.WriteLine($"Rule: {detail.Rule.Code} - {detail.Rule.Description} - Success: {detail.Success}"); + if (!detail.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in detail.Errors) + { + var target = techResult.Error.Target; + if (target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + var element = (Aspose.Html.HTMLElement)target.Item; + Console.WriteLine($" Element: <{element.TagName}> OuterHTML: {element.OuterHTML}"); + } + else + { + Console.WriteLine($" Target type: {target.TargetType}"); + } + } + } + } + } + else + { + Console.WriteLine("Validation succeeded with no errors."); + } + + // Example: Validate a specific guideline under a principle + var principle = webAccessibility.Rules.GetPrinciple("WCAG2AA"); + var guideline = principle.GetGuideline("1.1.1"); // Example guideline code + var validator2 = webAccessibility.CreateValidator(guideline, Aspose.Html.Accessibility.ValidationBuilder.All); + var validationResult2 = validator2.Validate(document); + if (!validationResult2.Success) + { + Console.WriteLine("Guideline validation failed."); + } + else + { + Console.WriteLine("Guideline validation succeeded."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/configure_validator_static_rule_repository_consistent_rule_application_across_runs.cs b/web-accessibility/configure_validator_static_rule_repository_consistent_rule_application_across_runs.cs new file mode 100644 index 0000000..fadb359 --- /dev/null +++ b/web-accessibility/configure_validator_static_rule_repository_consistent_rule_application_across_runs.cs @@ -0,0 +1,69 @@ +// Configure the validator to use a static rule repository for consistent rule application across runs. + +using System; +using System.IO; + +class Program +{ + static void Main() + { + try + { + // Prepare a simple HTML content and save it to a temporary file + string htmlContent = @" + + + Sample Page + + +

Hello, Aspose.HTML!

+

This is a sample HTML document for accessibility validation.

+ +"; + + string tempFilePath = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFilePath, htmlContent); + + // Initialize WebAccessibility and create a validator for all rules + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the HTML document + Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(tempFilePath); + + // Perform validation + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + // Output validation results + if (!validationResult.Success) + { + Console.WriteLine("Accessibility validation failed. Details:"); + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult detail in validationResult.Details) + { + string ruleCode = detail.Rule?.Code ?? "N/A"; + string ruleDescription = detail.Rule?.Description ?? "No description"; + Console.WriteLine($"Rule: {ruleCode}"); + Console.WriteLine($"Description: {ruleDescription}"); + Console.WriteLine($"Success: {detail.Success}"); + Console.WriteLine(new string('-', 40)); + } + } + else + { + Console.WriteLine("Accessibility validation succeeded. No issues found."); + } + + // Clean up + document.Dispose(); + // Optionally delete the temporary file + if (File.Exists(tempFilePath)) + { + File.Delete(tempFilePath); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/configure_validator_treat_caption_missing_warnings_as_errors_adjust_severity_settings.cs b/web-accessibility/configure_validator_treat_caption_missing_warnings_as_errors_adjust_severity_settings.cs new file mode 100644 index 0000000..9be2bab --- /dev/null +++ b/web-accessibility/configure_validator_treat_caption_missing_warnings_as_errors_adjust_severity_settings.cs @@ -0,0 +1,45 @@ +// Configure the validator to treat caption missing warnings as errors by adjusting severity settings. + +using System; +using System.IO; +using System.Text; + +class Program +{ + static void Main() + { + try + { + string html = "Test

Hello

"; + + using (var document = new Aspose.Html.HTMLDocument(new MemoryStream(Encoding.UTF8.GetBytes(html)), "")) + { + var webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + var validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + var validationResult = validator.Validate(document); + + if (validationResult.Success) + { + Console.WriteLine("Document passed accessibility validation."); + } + else + { + foreach (var ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (var techResult in ruleResult.Errors) + { + Console.WriteLine(techResult.Error.ErrorMessage); + } + } + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/create_custom_rule_subset_selecting_specific_wcag_criteria_from_accessibilityrules_before_validation.cs b/web-accessibility/create_custom_rule_subset_selecting_specific_wcag_criteria_from_accessibilityrules_before_validation.cs new file mode 100644 index 0000000..e00f468 --- /dev/null +++ b/web-accessibility/create_custom_rule_subset_selecting_specific_wcag_criteria_from_accessibilityrules_before_validation.cs @@ -0,0 +1,91 @@ +// Create a custom rule subset by selecting specific WCAG criteria from AccessibilityRules before validation. + +using System; +using System.IO; + +class Program +{ + static void Main() + { + try + { + // Prepare a minimal HTML file + string htmlContent = "Test

Hello

"; + string inputPath = Path.Combine(Directory.GetCurrentDirectory(), "sample.html"); + File.WriteAllText(inputPath, htmlContent); + + // Create WebAccessibility instance + var webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + + // Create validator with all rules + var validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the document and validate + using (var document = new Aspose.Html.HTMLDocument(inputPath)) + { + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (!validationResult.Success) + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in ruleResult.Errors) + { + if (techResult.Error.Target.TargetType == Aspose.Html.Accessibility.TargetTypes.HTMLElement) + { + Console.WriteLine(techResult.Error.ErrorMessage); + } + } + } + } + } + else + { + Console.WriteLine("Document passed accessibility validation."); + } + } + + // Retrieve a specific principle, guideline, and criterion + // Example codes are illustrative; replace with actual codes as needed + string principleCode = "Principle1"; + string guidelineCode = "Guideline1"; + string criterionCode = "Criterion1"; + + Aspose.Html.Accessibility.Principle principle = webAccessibility.Rules.GetPrinciple(principleCode); + if (principle != null) + { + Aspose.Html.Accessibility.Guideline guideline = principle.GetGuideline(guidelineCode); + if (guideline != null) + { + Aspose.Html.Accessibility.Criterion criterion = guideline.GetCriterion(criterionCode); + if (criterion != null) + { + Console.WriteLine("{0}:{1} - {2}", criterion.Code, criterion.Description, criterion.Level); + foreach (Aspose.Html.Accessibility.IRule technique in criterion.SufficientTechniques) + { + Console.WriteLine("{0}:{1}", technique.Code, technique.Description); + } + } + else + { + Console.WriteLine("Criterion not found."); + } + } + else + { + Console.WriteLine("Guideline not found."); + } + } + else + { + Console.WriteLine("Principle not found."); + } + } + catch (Exception ex) + { + Console.WriteLine("Error: " + ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/create_powershell_script_loads_dotnet_library_validates_html_file_prints_json_results.cs b/web-accessibility/create_powershell_script_loads_dotnet_library_validates_html_file_prints_json_results.cs new file mode 100644 index 0000000..17b894e --- /dev/null +++ b/web-accessibility/create_powershell_script_loads_dotnet_library_validates_html_file_prints_json_results.cs @@ -0,0 +1,50 @@ +// Create a PowerShell script that loads the .NET library, validates an HTML file, and prints JSON results. + +using System; +using System.IO; +using System.Text.Json; +using Aspose.Html; +using Aspose.Html.Accessibility; +using Aspose.Html.Accessibility.Results; + +public class Program +{ + public static void Main() + { + try + { + string inputPath = "sample.html"; + if (!File.Exists(inputPath)) + { + File.WriteAllText(inputPath, "Sample

Hello World

"); + } + + WebAccessibility webAccessibility = new WebAccessibility(); + AccessibilityValidator validator = webAccessibility.CreateValidator(ValidationBuilder.All); + HTMLDocument document = new HTMLDocument(inputPath); + ValidationResult validationResult = validator.Validate(document); + + int failedCount = 0; + foreach (RuleValidationResult detail in validationResult.Details) + { + if (!detail.Success) + { + failedCount++; + } + } + + var resultObj = new + { + Success = validationResult.Success, + FailedRules = failedCount + }; + + string json = JsonSerializer.Serialize(resultObj); + Console.WriteLine(json); + } + catch (Exception ex) + { + Console.WriteLine("Error: " + ex.Message); + } + } +} \ No newline at end of file diff --git a/web-accessibility/create_static_accessibilityvalidator_instance_and_reuse_to_validate_multiple_html_files_efficiently.cs b/web-accessibility/create_static_accessibilityvalidator_instance_and_reuse_to_validate_multiple_html_files_efficiently.cs new file mode 100644 index 0000000..c20f67f --- /dev/null +++ b/web-accessibility/create_static_accessibilityvalidator_instance_and_reuse_to_validate_multiple_html_files_efficiently.cs @@ -0,0 +1,50 @@ +// Create a static AccessibilityValidator instance and reuse it to validate multiple HTML files efficiently. + +using System; + +class Program +{ + static void Main() + { + try + { + // Prepare a simple HTML file for validation + string htmlPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "sample.html"); + string htmlContent = "Test"; + System.IO.File.WriteAllText(htmlPath, htmlContent); + + // Initialize accessibility validator + var webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + var validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the document and perform validation + using (var document = new Aspose.Html.HTMLDocument(htmlPath)) + { + var validationResult = validator.Validate(document); + + if (validationResult.Success) + { + Console.WriteLine("Document passed accessibility validation."); + } + else + { + foreach (var ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (var techResult in ruleResult.Errors) + { + var error = techResult.Error; + Console.WriteLine(error.ErrorMessage); + } + } + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/create_validator_instance_using_createvalidator_before_loading_html_document_for_accessibility.cs b/web-accessibility/create_validator_instance_using_createvalidator_before_loading_html_document_for_accessibility.cs new file mode 100644 index 0000000..7d3a59e --- /dev/null +++ b/web-accessibility/create_validator_instance_using_createvalidator_before_loading_html_document_for_accessibility.cs @@ -0,0 +1,57 @@ +// Create a validator instance using CreateValidator() before loading any HTML document for accessibility. + +using System; +using System.IO; +using System.Text; + +class Program +{ + static void Main() + { + try + { + // Create a simple HTML file for validation + string htmlContent = "Test

Hello World

"; + string tempFilePath = Path.Combine(Path.GetTempPath(), "sample.html"); + File.WriteAllText(tempFilePath, htmlContent, Encoding.UTF8); + + // Initialize accessibility validator + Aspose.Html.Accessibility.WebAccessibility webAccessibility = new Aspose.Html.Accessibility.WebAccessibility(); + Aspose.Html.Accessibility.AccessibilityValidator validator = webAccessibility.CreateValidator(Aspose.Html.Accessibility.ValidationBuilder.All); + + // Load the HTML document and perform validation + using (Aspose.Html.HTMLDocument document = new Aspose.Html.HTMLDocument(tempFilePath)) + { + Aspose.Html.Accessibility.Results.ValidationResult validationResult = validator.Validate(document); + + if (validationResult.Success) + { + Console.WriteLine("Document passed accessibility validation."); + } + else + { + foreach (Aspose.Html.Accessibility.Results.RuleValidationResult ruleResult in validationResult.Details) + { + if (!ruleResult.Success) + { + foreach (Aspose.Html.Accessibility.ITechniqueResult techResult in ruleResult.Errors) + { + Console.WriteLine(techResult.Error.ErrorMessage); + } + } + } + } + } + + // Clean up temporary file + if (File.Exists(tempFilePath)) + { + File.Delete(tempFilePath); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/web-accessibility/detect_absent_caption_files_referenced_by_track_elements_log_file_paths.cs b/web-accessibility/detect_absent_caption_files_referenced_by_track_elements_log_file_paths.cs new file mode 100644 index 0000000..921a6fd --- /dev/null +++ b/web-accessibility/detect_absent_caption_files_referenced_by_track_elements_log_file_paths.cs @@ -0,0 +1,93 @@ +// Detect absent caption files referenced by elements and log their file paths. + +using System; +using System.IO; +using System.Collections.Generic; +using Aspose.Html; +using Aspose.Html.Dom; +using Aspose.Html.Dom.XPath; +using Aspose.Html.Collections; + +class Program +{ + static void Main() + { + try + { + // Paths + string logPath = "log.txt"; + string inputPath = "input.html"; + string outputPath = "output.html"; + + // Create a minimal sample HTML file if it does not exist + if (!File.Exists(inputPath)) + { + string sampleHtml = @" + +Sample + + + + + +"; + File.WriteAllText(inputPath, sampleHtml); + } + + // Load document + Aspose.Html.HTMLDocument doc = new Aspose.Html.HTMLDocument(inputPath); + + // Log all image src attributes using XPath + Aspose.Html.Dom.XPath.IXPathResult result = doc.Evaluate( + "//img", + doc, + doc.CreateNSResolver(doc), + Aspose.Html.Dom.XPath.XPathResultType.Any, + null); + + Aspose.Html.Dom.Node node; + while ((node = result.IterateNext()) != null) + { + Aspose.Html.HTMLImageElement img = node as Aspose.Html.HTMLImageElement; + if (img != null) + { + File.AppendAllText(logPath, img.Src + Environment.NewLine); + } + } + + // Remove all