diff --git a/etc/schema/dotnet-slnx.rnc b/etc/schema/dotnet-slnx.rnc new file mode 100644 index 00000000000..2e081ed39fd --- /dev/null +++ b/etc/schema/dotnet-slnx.rnc @@ -0,0 +1,74 @@ +default namespace = "" +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace ns_1 = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace rng = "http://relaxng.org/ns/structure/1.0" + +start |= starting_Solution +starting_Solution = + element Solution { + (element Configurations { Configurations }? + | element Project { Project }* + | element Folder { Folder }* + | PropertiesGroup*)*, + attribute Description { xsd:string }?, + attribute Version { xsd:string }? + } +Configurations = + (element BuildType { + attribute Name { xsd:string } + }* + | element Platform { + attribute Name { xsd:string } + }* + | element ProjectType { ProjectType }*)* +ProjectType = + (ConfigurationRulesGroup*)*, + attribute TypeId { xsd:string }?, + attribute Name { xsd:string }?, + attribute Extension { xsd:string }?, + attribute BasedOn { xsd:string }?, + [ ns_1:defaultValue = "true" ] attribute IsBuildable { xsd:boolean }?, + [ ns_1:defaultValue = "true" ] + attribute SupportsPlatform { xsd:boolean }? +Folder = + (element File { + attribute Path { xsd:string } + }* + | element Project { Project }* + | PropertiesGroup*)*, + attribute Name { xsd:string } +Project = + (element BuildDependency { + attribute Project { text } + }* + | ConfigurationRulesGroup* + | PropertiesGroup*)*, + attribute Path { xsd:string }, + attribute Type { xsd:string }?, + attribute DisplayName { xsd:string }? +PropertiesGroup = + element Properties { + element Property { + attribute Name { xsd:string }, + attribute Value { xsd:string }? + }*, + attribute Name { text }, + attribute Scope { text }? + } +ConfigurationRulesGroup = + element BuildType { + attribute Solution { xsd:string }?, + attribute Project { xsd:string }? + }+ + | element Platform { + attribute Solution { xsd:string }?, + attribute Project { xsd:string } + }+ + | element Build { + attribute Solution { xsd:string }?, + attribute Project { xsd:string }? + }+ + | element Deploy { + attribute Solution { xsd:string }?, + attribute Project { xsd:string }? + }+ diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml index 18af8ccf4af..6701b9b56a6 100644 --- a/etc/schema/schemas.xml +++ b/etc/schema/schemas.xml @@ -93,4 +93,7 @@ along with GNU Emacs. If not, see . --> + + + diff --git a/lisp/files.el b/lisp/files.el index bd229673d8d..8cfbdc79bf0 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3158,6 +3158,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\|SQUASHFS\\)\\'" . ("\\.oak\\'" . scheme-mode) ("\\.sgml?\\'" . sgml-mode) ("\\.x[ms]l\\'" . xml-mode) + ("\\.slnx\\'" . xml-mode) ("\\.dbk\\'" . xml-mode) ("\\.dtd\\'" . sgml-mode) ("\\.ds\\(ss\\)?l\\'" . dsssl-mode)