\begingroup\makeatletter \gdef\@xlst@lst@inouter#1{\ifnum\lst@mode=\lst@Pmode\relax \xlstGet{keywordA}{#1}\else#1\fi} \lstdefinelanguage{lXml}{ number suffixes={}, morestring=[s]{"}{"}, morecomment=[s]{}, morecomment=[s]{!--}{--}, moredelim=[is][{}]{|plain|}{|plain|}, alsoletter={:\#!-}, alsoother={<>}, add to literate={/}{{\@xlst@lst@inouter{/}}}1 {<}{{\@xlst@lst@inouter{<}}}1 {>}{{\@xlst@lst@inouter{>}}}1, escapeinside={!*}{*!}, showstringspaces=true, %Damit es keine Verwechslungen gibt morekeywords = {!DOCTYPE,DOCTYPE,!ELEMENT,ELEMENT,!ATTLIST,ATTLIST}, morekeywords = [2]{xml}, morekeywords = [3]{SYSTEM,PUBLIC,EMPTY,\#PCDATA,\#IMPLIED,\#REQUIRED,\#FIXED,ANY}, morekeywords = [4]{CDATA,ID,ENTITY,IDREF,IDREFS,NOTATION,xs:element,xs:list,xs:namespace,xs:attribute,xs:simpleType,xs:minInclusive,xs:maxInclusive,xs:restriction,xs:enumeration,xs:union,xs:sequence,xs:complexType,xmlns,xmlns:xs,xmlns:xsi,xsi:schemaLocation,xs:schema,xs:integer,last()},% + xpath morekeywords = [6]{name,maxOccurs,minOccurs,version,encoding,targetNamespace,ref,type,memberTypes,itemType,base,value,default,transaction-type,version}, morestring=[s]'', } \endgroup \RegisterLanguage{xml}{lXml}