In the modsrdf.xsl XSLT file, I noticed that the variable declaration

xsl:variable name="resourceTypeClass"

line 1829 (or nearby) probably could be removed for clarity. Instead, two 
lines further down, one could replace

xsl:value-of select="concat($resourceTypeURI,$resourceTypeClass)"

with the content of the declaration of $resourceTypeParts because the 
for-each used to create

xsl:variable name="resourceTypeParts"

on lines 1824 to 1828 populates the $resourceTypeParts variable with an 
already concatenated string (not with a sequence). Furthermore, (at least) 
one of the vertical bars in the RegEx on line 1825 could be remove. I do 
not know either in which cases we need any vertical bar. In other words, 
removing the resourceTypeClass and resourceTypeParts variable 
declarations, we could write the rdf:type element similarly to:

xsl:element name="rdf:type"

xsl:attribute name="rdf:resource"

xsl:value-of select="$resourceTypeURI" /

xsl:for-each select="tokenize(.,'[\s|,\-]')"

xsl:value-of select="concat(upper-case(substring(.,1,1)),substring(.,2))" /




In the code above, I intentionally removed the greater-than and less-than 
characters for the sake of readability in "older" e-mail user agents.

I also consider that the two following tests

xsl:if test="@collection"


xsl:if test="@manuscript"

could be rewritten for readability and expansibility with a for-each.

xsl:for-each select="@manuscript|@collection"

The value-of could then be rewritten similarly to:

xsl:value-of select="concat($resourceTypeURI,concat(upper-case(substring(name(.),1,1)),substring(name(.),2)))"