This is a set of XML Schema simple types corresponding to various useful parts of URIs, so that their syntax can be accurately described. Note that xs:pattern only allows "simple" regex, so it's not possible to accurately constrain percent-escaped characters. They are, however, allowed by these types. All rules were derived from RFC 3986's ABNF. A URI path segment; corresponds to the RFC3986 "segment" rule. E.g., "http://example.com/{path-segment}/". Note that an empty segment is acceptable. A matrix URI argument name. E.g., "http://example.com/people;{matrix-name}=bob". A matrix URI argument value. E.g., "http://example.com/people;name={matrix-value}". Note that an empty value is acceptable. A URI Query string; corresponds to the RFC3986 "query" rule. E.g., "http://example.com/where?{query-string}". Note that an empty query is acceptable. A control name to be encoded, as specified in HTML 4.01. E.g., "http://example.com/where?{query-name}=there". A control value to be encoded, as specified in HTML 4.01. E.g., "http://example.com/where?here={query-arg}". Note that an empty value is acceptable.