Geraldine commited on
Commit
734c13e
·
verified ·
1 Parent(s): 9bcf535

Upload 10 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/chroma_xml_db/chroma.sqlite3 filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ from langchain_core.retrievers import BaseRetriever
4
+ from langchain_core.callbacks import CallbackManagerForRetrieverRun
5
+ from langchain_core.documents import Document
6
+ from langchain_chroma import Chroma
7
+ from langchain_groq import ChatGroq
8
+ from langchain_ollama import ChatOllama
9
+ from langchain_core.prompts import ChatPromptTemplate
10
+ from langchain_core.runnables import RunnablePassthrough
11
+ from langchain_core.output_parsers import StrOutputParser
12
+ from transformers import AutoModel, AutoTokenizer, pipeline
13
+ import joblib
14
+ from huggingface_hub import hf_hub_download
15
+ from llama_cpp import Llama
16
+ from typing import List
17
+
18
+ def setup_page():
19
+ st.set_page_config(page_title="EAD Generation", layout="wide")
20
+ display_app_header()
21
+
22
+ # Create two columns - one for query history and one for main content
23
+ col1, col2 = st.columns([1, 4])
24
+
25
+ with col1:
26
+ st.markdown("### Query History")
27
+ # Create a container for the query history
28
+ query_history_container = st.container()
29
+
30
+ return col1, col2
31
+
32
+ # Cache the header of the app to prevent re-rendering on each load
33
+ @st.cache_resource
34
+ def display_app_header():
35
+ """Display the header of the Streamlit app."""
36
+ st.title("EAD Generation")
37
+ #st.subheader("Tries")
38
+ st.markdown("---")
39
+ # Add a description of the app
40
+ st.markdown("""This app allows you to generate EAD/XML archival descriptions. See this serie of blog posts for explanations :
41
+
42
+ - https://iaetbibliotheques.fr/2024/11/comment-apprendre-lead-a-un-llm
43
+ - https://iaetbibliotheques.fr/2024/11/comment-apprendre-lead-a-un-llm-rag-23
44
+ - https://iaetbibliotheques.fr/2024/12/comment-apprendre-lead-a-un-llm-fine-tuning-33
45
+ """)
46
+ st.markdown("---")
47
+
48
+ # Display the header of the app and get columns
49
+ history_col, main_col = setup_page()
50
+
51
+ def setup_sidebar():
52
+ groq_models = ["llama3-70b-8192", "llama-3.1-70b-versatile","llama3-8b-8192", "llama-3.1-8b-instant", "mixtral-8x7b-32768","gemma2-9b-it", "gemma-7b-it"]
53
+ selected_groq_models = st.sidebar.radio("Choose a Groq models", groq_models)
54
+ return selected_groq_models
55
+
56
+ def create_groq_llm(model):
57
+ return ChatGroq(
58
+ model=model,
59
+ temperature=0.1,
60
+ max_tokens=None,
61
+ timeout=None,
62
+ max_retries=2,
63
+ groq_api_key=st.secrets["GROQ_API_KEY"]
64
+ )
65
+
66
+ def create_aws_ollama_llm():
67
+ return ChatOllama(
68
+ model="ollama-3.1-8b-instant",
69
+ base_url="https://api.ollama.com",
70
+ temperature=0.1,
71
+ max_tokens=None,
72
+ timeout=None,
73
+ max_retries=2,
74
+ )
75
+
76
+ def setup_zero_shot_tab(llm):
77
+ st.header("Zero-shot Prompting")
78
+ prompt = ChatPromptTemplate.from_messages(
79
+ [
80
+ (
81
+ "system",
82
+ "You are an expert in the domain of archival description in the standardized Encoded Archival Description EAD format** and intelligent EAD/XML generator.",
83
+ ),
84
+ ("human", "{question}"),
85
+ ]
86
+ )
87
+ zero_shot_chain = prompt | llm | StrOutputParser()
88
+ return zero_shot_chain
89
+
90
+ def setup_ead_xsd_tab(llm):
91
+ st.header("One-shot Prompting with EAD 2002 XSD schema")
92
+ ead_xsd_2002 = open("assets/ead_xsd_2002.xml", "r").read()
93
+
94
+ class CustomRetriever(BaseRetriever):
95
+ def _get_relevant_documents(
96
+ self, query: str, *, run_manager: CallbackManagerForRetrieverRun
97
+ ) -> List[Document]:
98
+ return [Document(page_content=ead_xsd_2002)]
99
+
100
+ retriever = CustomRetriever()
101
+
102
+ template = """
103
+ ### [INST]
104
+ **You are an expert in the domain of archival description in the standardized Encoded Archival Description EAD format** and intelligent EAD/XML generator.
105
+ Use the following xsd schema context to answer the question by generating a compliant xml content.
106
+
107
+ {context}
108
+
109
+ Please follow the EAD schema guidelines to ensure your output is valid and well-formed. Do not include any markup or comments other than what is specified in the schema.
110
+
111
+ ### QUESTION:
112
+ {question}
113
+
114
+ [/INST]
115
+ """
116
+
117
+ prompt = ChatPromptTemplate.from_template(template)
118
+ retrieval_chain = (
119
+ {"context": retriever, "question": RunnablePassthrough()}
120
+ | prompt
121
+ | llm
122
+ | StrOutputParser()
123
+ )
124
+
125
+ return retrieval_chain
126
+
127
+ def setup_rag_tab(llm):
128
+ st.header("RAG")
129
+
130
+ model = AutoModel.from_pretrained("Geraldine/msmarco-distilbert-base-v4-ead", token=st.secrets["HF_TOKEN"])
131
+ tokenizer = AutoTokenizer.from_pretrained("Geraldine/msmarco-distilbert-base-v4-ead", token=st.secrets["HF_TOKEN"])
132
+ #pca = hf_hub_download("Geraldine/msmarco-distilbert-base-v4-ead", "pca_model.joblib",local_dir="assets")
133
+ feature_extraction_pipeline = pipeline("feature-extraction", model=model, tokenizer=tokenizer)
134
+
135
+ class HuggingFaceEmbeddingFunction:
136
+ def __init__(self, pipeline, pca_model_path):
137
+ self.pipeline = pipeline
138
+ self.pca = joblib.load(pca_model_path)
139
+
140
+ # Function for embedding documents (lists of text)
141
+ def embed_documents(self, texts):
142
+ # Get embeddings as numpy arrays
143
+ embeddings = self.pipeline(texts)
144
+ embeddings = [embedding[0][0] for embedding in embeddings]
145
+ embeddings = np.array(embeddings)
146
+
147
+ # Transform embeddings using PCA
148
+ reduced_embeddings = self.pca.transform(embeddings)
149
+ return reduced_embeddings.tolist()
150
+
151
+ # Function for embedding individual queries
152
+ def embed_query(self, text):
153
+ embedding = self.pipeline(text)
154
+ embedding = np.array(embedding[0][0]).reshape(1, -1)
155
+
156
+ # Transform embedding using PCA
157
+ reduced_embedding = self.pca.transform(embedding)
158
+ return reduced_embedding.flatten().tolist()
159
+
160
+ embeddings = HuggingFaceEmbeddingFunction(feature_extraction_pipeline, pca_model_path="assets/pca_model.joblib")
161
+ persist_directory = "assets/chroma_xml_db"
162
+ vector_store = Chroma(
163
+ collection_name="ead-xml",
164
+ embedding_function=embeddings,
165
+ persist_directory=persist_directory,
166
+ )
167
+ retriever = vector_store.as_retriever()
168
+
169
+ template = """
170
+ # Generate EAD/XML File for Archival Collection
171
+
172
+ ## Description
173
+ You are an assistant for the generation of archives encoded in EAD/XML format.
174
+ You are an expert in archival description rules and standards, knowing very well the EAD format for encoding archival metadata.
175
+
176
+ ## Instruction
177
+ Answer the question based only on the following context:
178
+ {context}.
179
+
180
+ The EAD/XML sections you generate must follow the Library of Congress EAD schema and be in the style of a traditional archival finding aid, as if written by a professional archivist, including the required XML tags and structure.
181
+
182
+ ## Question
183
+ {question}
184
+
185
+ ## Answer
186
+ """
187
+
188
+ prompt = ChatPromptTemplate.from_template(template)
189
+ chain = (
190
+ {"context": retriever, "question": RunnablePassthrough()}
191
+ | prompt
192
+ | llm
193
+ | StrOutputParser()
194
+ )
195
+
196
+ return chain
197
+
198
+ def set_up_local_fine_tuned_tab(query):
199
+ st.header("Fine-tuned Zephir model")
200
+
201
+ llm = Llama(
202
+ model_path="assets/FineZephir-sft-instruct-ead-Q5_K_M.gguf",
203
+ n_ctx=1024,
204
+ verbose=False
205
+ )
206
+ output = llm.create_chat_completion(
207
+ messages = [
208
+ {"role": "system", "content": "You are an archivist expert in EAD format."},
209
+ {
210
+ "role": "user",
211
+ "content": query
212
+ }
213
+ ]
214
+ )
215
+ return output["choices"][0]["message"]["content"]
216
+
217
+ def setup_finetuned_tab():
218
+ st.header("Fine-tuned Zephir model")
219
+
220
+ llm = create_aws_ollama_llm()
221
+ prompt = ChatPromptTemplate.from_messages(
222
+ [
223
+ (
224
+ "system",
225
+ "You are an expert in the domain of archival description in the standardized Encoded Archival Description EAD format** and intelligent EAD/XML generator.",
226
+ ),
227
+ ("human", "{question}"),
228
+ ]
229
+ )
230
+ fine_tuned_chain = prompt | llm | StrOutputParser()
231
+ return fine_tuned_chain
232
+
233
+ def clear_outputs():
234
+ # Clear all stored responses from session state
235
+ for key in list(st.session_state.keys()):
236
+ if key.startswith('response_'):
237
+ del st.session_state[key]
238
+
239
+ # Initialize query history in session state if it doesn't exist
240
+ if 'query_history' not in st.session_state:
241
+ st.session_state.query_history = []
242
+
243
+ # Move all main content to the main column
244
+ with main_col:
245
+ selected_groq_models = setup_sidebar()
246
+
247
+ if 'previous_query' not in st.session_state:
248
+ st.session_state.previous_query = ''
249
+
250
+ if 'current_query' not in st.session_state:
251
+ st.session_state.current_query = ''
252
+
253
+ query = st.chat_input("Enter your query", key="chat_input")
254
+ st.markdown("*Example queries : Generate an EAD description for the personal papers of Marie Curie, Create an EAD inventory for a collection of World War II photographs, Create a EAD compliant `<eadheader>` sections with all necessary attributes and child elements.*")
255
+
256
+ tab1, tab2, tab3, tab4 = st.tabs(["Zero-shot prompting","One-shot prompting with EAD schema", "RAG", "Fine-tuned Zephir model"])
257
+
258
+ # Display info messages for each tab on app launch
259
+ with tab1:
260
+ st.info("Simple inference with zero-shot prompting : the prompt used to interact with the model does not contain examples or demonstrations. The LLM used id the one selected in the sidebar list.",icon="ℹ️")
261
+
262
+ with tab2:
263
+ st.info("One-shot inference with EAD 2002 XSD schema : the prompt used to interact with the model contains the plaintext of the EAD schema as a guideline for the desired output format. The LLM used id the one selected in the sidebar list.",icon="ℹ️")
264
+
265
+ with tab3:
266
+ st.info("Retrieval-augmented generation : the prompt used to interact with the model contains the relevant context from an archival collection of EAD files. The LLM used id the one selected in the sidebar list.",icon="ℹ️")
267
+
268
+ with tab4:
269
+ st.info("Fine-tuned Zephir model : the model has been fine-tuned on a dataset of archival descriptions in the EAD format",icon="ℹ️")
270
+
271
+ # Process query for all tabs when submitted
272
+ if query:
273
+ # Add new query to history if it's different from the last one
274
+ if not st.session_state.query_history or query != st.session_state.query_history[-1]:
275
+ st.session_state.query_history.append(query)
276
+
277
+ # Store the current query
278
+ st.session_state.current_query = query
279
+ # Clear outputs if query has changed
280
+ if query != st.session_state.previous_query:
281
+ clear_outputs()
282
+ st.session_state.previous_query = query
283
+
284
+ with st.spinner('Processing query across all models...'):
285
+ # Process for Tab 1 - zero-shot inference
286
+ with tab1:
287
+ llm = create_groq_llm(selected_groq_models)
288
+ zero_shot_chain = setup_zero_shot_tab(llm)
289
+ st.session_state.response_zero_shot = zero_shot_chain.invoke({"question": query})
290
+ with st.chat_message("assistant"):
291
+ st.markdown(st.session_state.response_zero_shot)
292
+
293
+ # Process for Tab 2 - EAD XSD
294
+ with tab2:
295
+ llm = create_groq_llm("llama-3.1-8b-instant")
296
+ ead_chain = setup_ead_xsd_tab(llm)
297
+ st.session_state.response_ead = ead_chain.invoke(query)
298
+ with st.chat_message("assistant"):
299
+ st.markdown(st.session_state.response_ead)
300
+
301
+ # Process for Tab 3 - RAG
302
+ with tab3:
303
+ llm = create_groq_llm(selected_groq_models)
304
+ rag_chain = setup_rag_tab(llm)
305
+ st.session_state.response_rag = rag_chain.invoke(query)
306
+ with st.chat_message("assistant"):
307
+ st.markdown(st.session_state.response_rag)
308
+
309
+ # Process for Tab 4 - Fine-tuned model
310
+ """with tab4:
311
+ st.session_state.response_fine_tuned = set_up_fine_tuned_tab(query)
312
+ soup = BeautifulSoup(st.session_state.response_fine_tuned, "lxml-xml")
313
+ with st.chat_message("assistant"):
314
+ st.code(soup.prettify(), language="xml-doc")"""
315
+ """with tab4:
316
+ llm = create_aws_ollama_llm()
317
+ fine_tuned_chain = setup_finetuned_tab(llm)
318
+ st.session_state.response_fine_tuned = fine_tuned_chain.invoke(query)
319
+ with st.chat_message("assistant"):
320
+ st.markdown(st.session_state.response_fine_tuned)"""
321
+ with tab4:
322
+ st.write("Coming soon...")
323
+
324
+ # Display query history in the sidebar column
325
+ with history_col:
326
+ if st.session_state.query_history:
327
+ for i, past_query in enumerate(reversed(st.session_state.query_history)):
328
+ st.text_area(f"Query {len(st.session_state.query_history) - i}",
329
+ past_query,
330
+ height=100,
331
+ key=f"history_{i}",
332
+ disabled=True)
333
+ else:
334
+ st.write("No queries yet")
assets/chroma_xml_db/chroma.sqlite3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0f87153f7a0864894da911cfea6067072a20206f5c9d79523df091c9f863ab0
3
+ size 117727232
assets/chroma_xml_db/d1216027-65aa-4bc2-84bc-4abdb07ccf3b/data_level0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:87c0fd37eb2dc162ad3c5de12e0253ede0a24dcb511dc800ef8ce99b20331713
3
+ size 7824000
assets/chroma_xml_db/d1216027-65aa-4bc2-84bc-4abdb07ccf3b/header.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ba4de005a4d2b97a9d42069e21f1ff9210264d6d8c39e7aef3a2a3138cac643f
3
+ size 100
assets/chroma_xml_db/d1216027-65aa-4bc2-84bc-4abdb07ccf3b/index_metadata.pickle ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c3b8e24ab9c1245ef325c0d592fe16731f3e450cbe48f20ad43a6c37d7b4bfcb
3
+ size 694107
assets/chroma_xml_db/d1216027-65aa-4bc2-84bc-4abdb07ccf3b/length.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:734cf86cd8ca41e4e235dd03c9139ddde6fb344a3c69e4e0afd5d2f791345bd1
3
+ size 48000
assets/chroma_xml_db/d1216027-65aa-4bc2-84bc-4abdb07ccf3b/link_lists.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:084462923f8749d3c18b861379f1682d2d7cc9b6502d4c3a4d96a5cfc49fcfda
3
+ size 101924
assets/ead_xsd_2002.xml ADDED
@@ -0,0 +1,1849 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!--
2
+ EAD 2002 W3C Schema
3
+ Version: 20210412 Release
4
+ Date: 20210412
5
+
6
+ Previous Version: 200612 Release
7
+
8
+ Publisher: Society of American Archivists and the Library of Congress
9
+
10
+ Funding: National Historical Publications and Records Commission
11
+
12
+ *** Comments, questions, and error reports should be sent to the EAD listserv
13
+ with subject line: Schema Comment ***
14
+
15
+ Listserv address: [email protected]
16
+
17
+ Editors (SAA/EADWG/EAD Schema Working Group):
18
+
19
+ Francoise Bourdon (Bibliothèque nationale de France)
20
+ Terry Catapano (Columbia University)
21
+ Jerry McDonough (University of Illinois)
22
+ Lee Mandell (New York University)
23
+ Chris Prom (University of Illinois)
24
+ Stephen Yearl (Yale University)
25
+ Daniel Pitti (University of Virginia), Chair
26
+
27
+ EAD DTD / Schema Relationship
28
+
29
+ With one exception (XLink elements and attributes), the EAD Schema is a subset of the
30
+ EAD 2002 DTD.
31
+
32
+ The Xlink compatible elements and attributes in the DTD have been made compliant
33
+ by implementing XML Namespace. As a result, DTD compliant instances containing
34
+ ANY of the XLink tags and attributes will not validate against the Schema. These instances
35
+ must be converted into XLink compliant tags and attributes. The EAD Schema WG will
36
+ provide XSLT for this conversion with the release of the official version of the Schema.
37
+
38
+ The following elements and their XLink-specific attributes are impacted by this change:
39
+
40
+ arc archref
41
+ bibref
42
+ dao daogrp daoloc
43
+ extptr extptrloc extref extrefloc
44
+ linkgrp
45
+ ptr ptrloc
46
+ ref refloc resource
47
+ title
48
+
49
+ With the exception of the XLink tags and attributes, a Schema valid instance will be a DTD
50
+ valid instance. However, because of the imposition of datatype contrainst on specific
51
+ attribute values, a DTD valid instance may not be Schema valid.
52
+
53
+ The following attributes are impacted by the imposition of datatype constraints:
54
+
55
+ @normal on <unitdate> and <date>: constrained to date and date range subset of ISO 8601
56
+ @repositorycode: previously constrained to ISO 15511 (ISIL); with the final release of EAD2002, this has been relaxed to NMTOKEN, which also brings parity with the DTD
57
+ @mainagencycode: same as @repositorycode; and now, with the final release of EAD2002, this has been relaxed to NMTOKEN, which also brings parity with the DTD
58
+ @langcode: previously constrained to ISO 639-2 alpha-3 code list; now relaxed to NMTOKEN, which also brings parity with the DTD
59
+ @scriptcode: previously constrained to ISO 15924 code list; now relaxed to NMTOKEN, which also brings parity with the DTD
60
+ @countrycode: previously constrained to ISO 3166-1 alpha-2 code list; now relaxed to NMTOKEN, which also brings parity with the DTD
61
+
62
+ Revision history:
63
+ 1. Revised definitions of XLink elements and attributes in order to make the XSD schema
64
+ conform to xlink.xsd instance used by MODS and METS (20080421)
65
+ 2. Relaxed @repositorycode, @mainagencycode, @langcode, @scriptcode, and @countrycode to NMTOKEN (20210412)
66
+
67
+ -->
68
+ <xs:schema xmlns="urn:isbn:1-931666-22-9" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:isbn:1-931666-22-9">
69
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.loc.gov/standards/xlink/xlink.xsd"/>
70
+ <xs:attributeGroup name="am.date.normal">
71
+ <xs:attribute name="normal">
72
+ <xs:simpleType>
73
+ <xs:restriction base="xs:token">
74
+ <xs:pattern value="(\-?(0|1|2)([0-9]{3})(((01|02|03|04|05|06|07|08|09|10|11|12)((0[1-9])|((1|2)[0-9])|(3[0-1])))|\-((01|02|03|04|05|06|07|08|09|10|11|12)(\-((0[1-9])|((1|2)[0-9])|(3[0-1])))?))?)(/\-?(0|1|2)([0-9]{3})(((01|02|03|04|05|06|07|08|09|10|11|12)((0[1-9])|((1|2)[0-9])|(3[0-1])))|\-((01|02|03|04|05|06|07|08|09|10|11|12)(\-((0[1-9])|((1|2)[0-9])|(3[0-1])))?))?)?"/>
75
+ </xs:restriction>
76
+ </xs:simpleType>
77
+ </xs:attribute>
78
+ </xs:attributeGroup>
79
+ <xs:attributeGroup name="am.langcode">
80
+ <xs:attribute name="langcode" type="xs:NMTOKEN"/>
81
+ </xs:attributeGroup>
82
+ <xs:attributeGroup name="am.countrycode">
83
+ <xs:attribute name="countrycode" type="xs:NMTOKEN"/>
84
+ </xs:attributeGroup>
85
+ <xs:group name="m.render">
86
+ <xs:choice>
87
+ <xs:element name="emph" type="emph"/>
88
+ <xs:element name="lb" type="lb"/>
89
+ </xs:choice>
90
+ </xs:group>
91
+ <xs:complexType mixed="true" name="emph">
92
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
93
+ <xs:attribute name="render" type="av.render"/>
94
+ <xs:attribute name="id" type="xs:ID"/>
95
+ <xs:attribute name="altrender"/>
96
+ </xs:complexType>
97
+ <xs:complexType name="lb"/>
98
+ <xs:group name="m.refs">
99
+ <xs:choice>
100
+ <xs:element name="ref" type="ref"/>
101
+ <xs:element name="extref" type="extref"/>
102
+ <xs:element name="linkgrp" type="linkgrp"/>
103
+ <xs:element name="bibref" type="bibref"/>
104
+ <xs:element name="title" type="title"/>
105
+ <xs:element name="archref" type="archref"/>
106
+ </xs:choice>
107
+ </xs:group>
108
+ <xs:complexType name="linkgrp">
109
+ <xs:group maxOccurs="unbounded" ref="extended.els"/>
110
+ <xs:attributeGroup ref="a.common"/>
111
+ <xs:attributeGroup ref="xlink:extendedLink"/>
112
+ </xs:complexType>
113
+ <xs:group name="m.access">
114
+ <xs:choice>
115
+ <xs:element name="corpname" type="corpname"/>
116
+ <xs:element name="famname" type="famname"/>
117
+ <xs:element name="geogname" type="geogname"/>
118
+ <xs:element name="name" type="name"/>
119
+ <xs:element name="occupation" type="occupation"/>
120
+ <xs:element name="persname" type="persname"/>
121
+ <xs:element name="subject" type="subject"/>
122
+ <xs:element name="genreform" type="genreform"/>
123
+ <xs:element name="function" type="function"/>
124
+ </xs:choice>
125
+ </xs:group>
126
+ <xs:complexType mixed="true" name="occupation">
127
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
128
+ <xs:attributeGroup ref="a.common"/>
129
+ <xs:attributeGroup ref="a.access"/>
130
+ <xs:attribute name="encodinganalog"/>
131
+ </xs:complexType>
132
+ <xs:complexType mixed="true" name="subject">
133
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
134
+ <xs:attributeGroup ref="a.common"/>
135
+ <xs:attributeGroup ref="a.access"/>
136
+ <xs:attribute name="encodinganalog"/>
137
+ </xs:complexType>
138
+ <xs:complexType mixed="true" name="genreform">
139
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
140
+ <xs:attributeGroup ref="a.common"/>
141
+ <xs:attribute name="type"/>
142
+ <xs:attributeGroup ref="a.access"/>
143
+ <xs:attribute name="encodinganalog"/>
144
+ </xs:complexType>
145
+ <xs:complexType mixed="true" name="function">
146
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
147
+ <xs:attributeGroup ref="a.common"/>
148
+ <xs:attributeGroup ref="a.access"/>
149
+ <xs:attribute name="encodinganalog"/>
150
+ </xs:complexType>
151
+ <xs:group name="m.access.title">
152
+ <xs:choice>
153
+ <xs:group ref="m.access"/>
154
+ <xs:element name="title" type="title"/>
155
+ </xs:choice>
156
+ </xs:group>
157
+ <xs:group name="m.data">
158
+ <xs:choice>
159
+ <xs:group ref="m.access"/>
160
+ <xs:element name="date" type="date"/>
161
+ <xs:element name="num" type="num"/>
162
+ <xs:element name="origination" type="origination"/>
163
+ <xs:element name="repository" type="repository"/>
164
+ <xs:element name="unitdate" type="unitdate"/>
165
+ <xs:element name="unittitle" type="unittitle"/>
166
+ </xs:choice>
167
+ </xs:group>
168
+ <xs:group name="m.phrase.bare">
169
+ <xs:choice>
170
+ <xs:choice>
171
+ <xs:element name="ptr" type="ptr"/>
172
+ <xs:element name="extptr" type="extptr"/>
173
+ </xs:choice>
174
+ <xs:group ref="m.render"/>
175
+ </xs:choice>
176
+ </xs:group>
177
+ <xs:complexType name="extptr">
178
+ <xs:attributeGroup ref="a.common"/>
179
+ <xs:attributeGroup ref="a.external.ptr"/>
180
+ </xs:complexType>
181
+ <xs:group name="m.phrase.basic.norefs">
182
+ <xs:choice>
183
+ <xs:group ref="m.phrase.bare"/>
184
+ <xs:element name="abbr" type="abbr"/>
185
+ <xs:element name="expan" type="expan"/>
186
+ </xs:choice>
187
+ </xs:group>
188
+ <xs:group name="m.phrase.basic">
189
+ <xs:choice>
190
+ <xs:group ref="m.phrase.basic.norefs"/>
191
+ <xs:group ref="m.refs"/>
192
+ </xs:choice>
193
+ </xs:group>
194
+ <xs:group name="m.phrase.plus">
195
+ <xs:choice>
196
+ <xs:group ref="m.phrase.basic.norefs"/>
197
+ <xs:group ref="m.data"/>
198
+ <xs:group ref="m.refs"/>
199
+ </xs:choice>
200
+ </xs:group>
201
+ <xs:group name="m.inter.noquote">
202
+ <xs:choice>
203
+ <xs:element name="address" type="address"/>
204
+ <xs:element name="chronlist" type="chronlist"/>
205
+ <xs:element name="list" type="list"/>
206
+ <xs:element name="note" type="note"/>
207
+ <xs:element name="table" type="table"/>
208
+ </xs:choice>
209
+ </xs:group>
210
+ <xs:complexType name="chronlist">
211
+ <xs:sequence>
212
+ <xs:element minOccurs="0" name="head" type="head"/>
213
+ <xs:element minOccurs="0" name="listhead" type="listhead"/>
214
+ <xs:element maxOccurs="unbounded" name="chronitem" type="chronitem"/>
215
+ </xs:sequence>
216
+ <xs:attributeGroup ref="a.common"/>
217
+ <xs:attribute name="encodinganalog"/>
218
+ </xs:complexType>
219
+ <xs:complexType name="chronitem">
220
+ <xs:sequence>
221
+ <xs:element name="date" type="date"/>
222
+ <xs:choice>
223
+ <xs:element name="event" type="event"/>
224
+ <xs:element name="eventgrp" type="eventgrp"/>
225
+ </xs:choice>
226
+ </xs:sequence>
227
+ <xs:attributeGroup ref="a.common"/>
228
+ </xs:complexType>
229
+ <xs:complexType name="eventgrp">
230
+ <xs:sequence>
231
+ <xs:element maxOccurs="unbounded" name="event" type="event"/>
232
+ </xs:sequence>
233
+ <xs:attributeGroup ref="a.common"/>
234
+ </xs:complexType>
235
+ <xs:complexType name="table">
236
+ <xs:sequence>
237
+ <xs:element minOccurs="0" name="head" type="head"/>
238
+ <xs:element maxOccurs="unbounded" name="tgroup" type="tgroup"/>
239
+ </xs:sequence>
240
+ <xs:attributeGroup ref="a.common"/>
241
+ <xs:attribute name="frame">
242
+ <xs:simpleType>
243
+ <xs:restriction base="xs:token">
244
+ <xs:enumeration value="top"/>
245
+ <xs:enumeration value="bottom"/>
246
+ <xs:enumeration value="topbot"/>
247
+ <xs:enumeration value="all"/>
248
+ <xs:enumeration value="sides"/>
249
+ <xs:enumeration value="none"/>
250
+ </xs:restriction>
251
+ </xs:simpleType>
252
+ </xs:attribute>
253
+ <xs:attribute name="colsep" type="yesorno"/>
254
+ <xs:attribute name="rowsep" type="yesorno"/>
255
+ <xs:attribute name="pgwide" type="yesorno"/>
256
+ </xs:complexType>
257
+ <xs:complexType name="tgroup">
258
+ <xs:sequence>
259
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="colspec" type="colspec"/>
260
+ <xs:element minOccurs="0" name="thead" type="thead"/>
261
+ <xs:element name="tbody" type="tbody"/>
262
+ </xs:sequence>
263
+ <xs:attributeGroup ref="a.common"/>
264
+ <xs:attribute name="cols" type="xs:NMTOKEN" use="required"/>
265
+ <xs:attribute name="colsep" type="yesorno"/>
266
+ <xs:attribute name="rowsep" type="yesorno"/>
267
+ <xs:attribute name="align">
268
+ <xs:simpleType>
269
+ <xs:restriction base="xs:token">
270
+ <xs:enumeration value="left"/>
271
+ <xs:enumeration value="right"/>
272
+ <xs:enumeration value="center"/>
273
+ <xs:enumeration value="justify"/>
274
+ <xs:enumeration value="char"/>
275
+ </xs:restriction>
276
+ </xs:simpleType>
277
+ </xs:attribute>
278
+ </xs:complexType>
279
+ <xs:complexType name="colspec">
280
+ <xs:attribute name="colnum" type="xs:NMTOKEN"/>
281
+ <xs:attribute name="colname" type="xs:NMTOKEN"/>
282
+ <xs:attribute name="colwidth"/>
283
+ <xs:attribute name="colsep" type="yesorno"/>
284
+ <xs:attribute name="rowsep" type="yesorno"/>
285
+ <xs:attribute name="align">
286
+ <xs:simpleType>
287
+ <xs:restriction base="xs:token">
288
+ <xs:enumeration value="left"/>
289
+ <xs:enumeration value="right"/>
290
+ <xs:enumeration value="center"/>
291
+ <xs:enumeration value="justify"/>
292
+ <xs:enumeration value="char"/>
293
+ </xs:restriction>
294
+ </xs:simpleType>
295
+ </xs:attribute>
296
+ <xs:attribute name="char"/>
297
+ <xs:attribute name="charoff" type="xs:NMTOKEN"/>
298
+ </xs:complexType>
299
+ <xs:complexType name="tbody">
300
+ <xs:sequence>
301
+ <xs:element maxOccurs="unbounded" name="row" type="row"/>
302
+ </xs:sequence>
303
+ <xs:attributeGroup ref="a.common"/>
304
+ <xs:attribute name="valign">
305
+ <xs:simpleType>
306
+ <xs:restriction base="xs:token">
307
+ <xs:enumeration value="top"/>
308
+ <xs:enumeration value="middle"/>
309
+ <xs:enumeration value="bottom"/>
310
+ </xs:restriction>
311
+ </xs:simpleType>
312
+ </xs:attribute>
313
+ </xs:complexType>
314
+ <xs:group name="m.inter">
315
+ <xs:choice>
316
+ <xs:group ref="m.inter.noquote"/>
317
+ <xs:element name="blockquote" type="blockquote"/>
318
+ </xs:choice>
319
+ </xs:group>
320
+ <xs:complexType name="blockquote">
321
+ <xs:choice maxOccurs="unbounded">
322
+ <xs:group ref="m.inter.noquote"/>
323
+ <xs:element name="p" type="p"/>
324
+ </xs:choice>
325
+ <xs:attributeGroup ref="a.common"/>
326
+ </xs:complexType>
327
+ <xs:group name="m.blocks">
328
+ <xs:choice>
329
+ <xs:group ref="m.inter"/>
330
+ <xs:element name="p" type="p"/>
331
+ </xs:choice>
332
+ </xs:group>
333
+ <xs:group name="m.did">
334
+ <xs:choice>
335
+ <xs:element name="abstract" type="abstract"/>
336
+ <xs:element name="container" type="container"/>
337
+ <xs:element name="dao" type="dao"/>
338
+ <xs:element name="daogrp" type="daogrp"/>
339
+ <xs:element name="langmaterial" type="langmaterial"/>
340
+ <xs:element name="materialspec" type="materialspec"/>
341
+ <xs:element name="note" type="note"/>
342
+ <xs:element name="origination" type="origination"/>
343
+ <xs:element name="physdesc" type="physdesc"/>
344
+ <xs:element name="physloc" type="physloc"/>
345
+ <xs:element name="repository" type="repository"/>
346
+ <xs:element name="unitdate" type="unitdate"/>
347
+ <xs:element name="unitid" type="unitid"/>
348
+ <xs:element name="unittitle" type="unittitle"/>
349
+ </xs:choice>
350
+ </xs:group>
351
+ <xs:complexType mixed="true" name="abstract">
352
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
353
+ <xs:attributeGroup ref="a.common"/>
354
+ <xs:attribute name="label"/>
355
+ <xs:attribute name="encodinganalog"/>
356
+ <xs:attribute name="type"/>
357
+ <xs:attributeGroup ref="am.langcode"/>
358
+ </xs:complexType>
359
+ <xs:complexType mixed="true" name="container">
360
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
361
+ <xs:attributeGroup ref="a.common"/>
362
+ <xs:attribute name="label"/>
363
+ <xs:attribute name="type" type="xs:NMTOKEN"/>
364
+ <xs:attribute name="encodinganalog"/>
365
+ <xs:attribute name="parent" type="xs:IDREFS"/>
366
+ </xs:complexType>
367
+ <xs:complexType mixed="true" name="langmaterial">
368
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
369
+ <xs:group ref="m.phrase.basic"/>
370
+ <xs:element name="language" type="language"/>
371
+ </xs:choice>
372
+ <xs:attributeGroup ref="a.common"/>
373
+ <xs:attribute name="label"/>
374
+ <xs:attribute name="encodinganalog"/>
375
+ </xs:complexType>
376
+ <xs:complexType mixed="true" name="physdesc">
377
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
378
+ <xs:group ref="m.phrase.basic"/>
379
+ <xs:element name="dimensions" type="dimensions"/>
380
+ <xs:element name="physfacet" type="physfacet"/>
381
+ <xs:element name="extent" type="extent"/>
382
+ <xs:element name="date" type="date"/>
383
+ <xs:group ref="m.access"/>
384
+ </xs:choice>
385
+ <xs:attributeGroup ref="a.common"/>
386
+ <xs:attribute name="label"/>
387
+ <xs:attribute name="encodinganalog"/>
388
+ <xs:attribute name="source" type="xs:NMTOKEN"/>
389
+ <xs:attribute name="rules" type="xs:NMTOKEN"/>
390
+ </xs:complexType>
391
+ <xs:complexType mixed="true" name="physfacet">
392
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
393
+ <xs:group ref="m.phrase.basic"/>
394
+ <xs:group ref="m.access"/>
395
+ <xs:element name="date" type="date"/>
396
+ </xs:choice>
397
+ <xs:attributeGroup ref="a.common"/>
398
+ <xs:attribute name="label"/>
399
+ <xs:attribute name="type"/>
400
+ <xs:attribute name="unit"/>
401
+ <xs:attribute name="source" type="xs:NMTOKEN"/>
402
+ <xs:attribute name="rules" type="xs:NMTOKEN"/>
403
+ <xs:attribute name="encodinganalog"/>
404
+ </xs:complexType>
405
+ <xs:complexType mixed="true" name="extent">
406
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
407
+ <xs:attributeGroup ref="a.common"/>
408
+ <xs:attribute name="label"/>
409
+ <xs:attribute name="type"/>
410
+ <xs:attribute name="unit"/>
411
+ <xs:attribute name="encodinganalog"/>
412
+ </xs:complexType>
413
+ <xs:complexType mixed="true" name="physloc">
414
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
415
+ <xs:attributeGroup ref="a.common"/>
416
+ <xs:attribute name="label"/>
417
+ <xs:attribute name="type"/>
418
+ <xs:attribute name="encodinganalog"/>
419
+ <xs:attribute name="parent" type="xs:IDREFS"/>
420
+ </xs:complexType>
421
+ <xs:complexType mixed="true" name="unitid">
422
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
423
+ <xs:attributeGroup ref="a.common"/>
424
+ <xs:attribute name="label"/>
425
+ <xs:attribute name="type"/>
426
+ <xs:attributeGroup ref="am.countrycode"/>
427
+ <xs:attribute name="repositorycode" type="xs:NMTOKEN"/>
428
+ <xs:attribute name="identifier"/>
429
+ <xs:attribute name="encodinganalog"/>
430
+ </xs:complexType>
431
+ <xs:group name="m.desc.base">
432
+ <xs:choice>
433
+ <xs:element name="accessrestrict" type="accessrestrict"/>
434
+ <xs:element name="accruals" type="accruals"/>
435
+ <xs:element name="acqinfo" type="acqinfo"/>
436
+ <xs:element name="altformavail" type="altformavail"/>
437
+ <xs:element name="appraisal" type="appraisal"/>
438
+ <xs:element name="arrangement" type="arrangement"/>
439
+ <xs:element name="bibliography" type="bibliography"/>
440
+ <xs:element name="bioghist" type="bioghist"/>
441
+ <xs:element name="controlaccess" type="controlaccess"/>
442
+ <xs:element name="custodhist" type="custodhist"/>
443
+ <xs:element name="descgrp" type="descgrp"/>
444
+ <xs:element name="fileplan" type="fileplan"/>
445
+ <xs:element name="index" type="index"/>
446
+ <xs:element name="odd" type="odd"/>
447
+ <xs:element name="originalsloc" type="originalsloc"/>
448
+ <xs:element name="otherfindaid" type="otherfindaid"/>
449
+ <xs:element name="phystech" type="phystech"/>
450
+ <xs:element name="prefercite" type="prefercite"/>
451
+ <xs:element name="processinfo" type="processinfo"/>
452
+ <xs:element name="relatedmaterial" type="relatedmaterial"/>
453
+ <xs:element name="scopecontent" type="scopecontent"/>
454
+ <xs:element name="separatedmaterial" type="separatedmaterial"/>
455
+ <xs:element name="userestrict" type="userestrict"/>
456
+ </xs:choice>
457
+ </xs:group>
458
+ <xs:complexType name="descgrp">
459
+ <xs:sequence>
460
+ <xs:element minOccurs="0" name="head" type="head"/>
461
+ <xs:choice maxOccurs="unbounded">
462
+ <xs:group ref="m.blocks"/>
463
+ <xs:group ref="m.desc.base"/>
464
+ </xs:choice>
465
+ </xs:sequence>
466
+ <xs:attributeGroup ref="a.common"/>
467
+ <xs:attribute name="type"/>
468
+ <xs:attribute name="encodinganalog"/>
469
+ </xs:complexType>
470
+ <xs:group name="m.desc.full">
471
+ <xs:choice>
472
+ <xs:group ref="m.desc.base"/>
473
+ <xs:element name="dsc" type="dsc"/>
474
+ <xs:element name="dao" type="dao"/>
475
+ <xs:element name="daogrp" type="daogrp"/>
476
+ <xs:element name="note" type="note"/>
477
+ </xs:choice>
478
+ </xs:group>
479
+ <xs:group name="m.para.content">
480
+ <xs:choice>
481
+ <xs:group ref="m.phrase.plus"/>
482
+ <xs:group ref="m.inter"/>
483
+ </xs:choice>
484
+ </xs:group>
485
+ <xs:group name="m.para.content.norefs">
486
+ <xs:choice>
487
+ <xs:choice>
488
+ <xs:group ref="m.phrase.basic.norefs"/>
489
+ <xs:group ref="m.data"/>
490
+ </xs:choice>
491
+ <xs:group ref="m.inter"/>
492
+ </xs:choice>
493
+ </xs:group>
494
+ <xs:attributeGroup name="am.dates.calendar">
495
+ <xs:attribute default="gregorian" name="calendar" type="xs:NMTOKEN"/>
496
+ </xs:attributeGroup>
497
+ <xs:attributeGroup name="am.dates.era">
498
+ <xs:attribute default="ce" name="era" type="xs:NMTOKEN"/>
499
+ </xs:attributeGroup>
500
+ <xs:attributeGroup name="am.dsctab.tpattern">
501
+ <xs:attribute name="tpattern" type="xs:NMTOKEN"/>
502
+ </xs:attributeGroup>
503
+ <xs:simpleType name="yesorno">
504
+ <xs:restriction base="xs:NMTOKEN"/>
505
+ </xs:simpleType>
506
+ <xs:simpleType name="av.level">
507
+ <xs:restriction base="xs:token">
508
+ <xs:enumeration value="class"/>
509
+ <xs:enumeration value="collection"/>
510
+ <xs:enumeration value="file"/>
511
+ <xs:enumeration value="fonds"/>
512
+ <xs:enumeration value="item"/>
513
+ <xs:enumeration value="otherlevel"/>
514
+ <xs:enumeration value="recordgrp"/>
515
+ <xs:enumeration value="series"/>
516
+ <xs:enumeration value="subfonds"/>
517
+ <xs:enumeration value="subgrp"/>
518
+ <xs:enumeration value="subseries"/>
519
+ </xs:restriction>
520
+ </xs:simpleType>
521
+ <xs:simpleType name="av.render">
522
+ <xs:restriction base="xs:token">
523
+ <xs:enumeration value="altrender"/>
524
+ <xs:enumeration value="bold"/>
525
+ <xs:enumeration value="bolddoublequote"/>
526
+ <xs:enumeration value="bolditalic"/>
527
+ <xs:enumeration value="boldsinglequote"/>
528
+ <xs:enumeration value="boldsmcaps"/>
529
+ <xs:enumeration value="boldunderline"/>
530
+ <xs:enumeration value="doublequote"/>
531
+ <xs:enumeration value="italic"/>
532
+ <xs:enumeration value="nonproport"/>
533
+ <xs:enumeration value="singlequote"/>
534
+ <xs:enumeration value="smcaps"/>
535
+ <xs:enumeration value="sub"/>
536
+ <xs:enumeration value="super"/>
537
+ <xs:enumeration value="underline"/>
538
+ </xs:restriction>
539
+ </xs:simpleType>
540
+ <xs:attributeGroup name="a.common">
541
+ <xs:attribute name="id" type="xs:ID"/>
542
+ <xs:attribute name="altrender"/>
543
+ <xs:attribute name="audience">
544
+ <xs:simpleType>
545
+ <xs:restriction base="xs:token">
546
+ <xs:enumeration value="external"/>
547
+ <xs:enumeration value="internal"/>
548
+ </xs:restriction>
549
+ </xs:simpleType>
550
+ </xs:attribute>
551
+ </xs:attributeGroup>
552
+ <xs:attributeGroup name="a.access">
553
+ <xs:attribute name="source" type="xs:NMTOKEN"/>
554
+ <xs:attribute name="rules" type="xs:NMTOKEN"/>
555
+ <xs:attribute name="authfilenumber"/>
556
+ <xs:attribute name="normal"/>
557
+ </xs:attributeGroup>
558
+ <xs:attributeGroup name="a.desc.base">
559
+ <xs:attribute name="otherlevel" type="xs:NMTOKEN"/>
560
+ <xs:attribute name="encodinganalog"/>
561
+ </xs:attributeGroup>
562
+ <xs:attributeGroup name="a.desc.c">
563
+ <xs:attributeGroup ref="a.common"/>
564
+ <xs:attribute name="level" type="av.level"/>
565
+ <xs:attributeGroup ref="a.desc.base"/>
566
+ <xs:attributeGroup ref="am.dsctab.tpattern"/>
567
+ </xs:attributeGroup>
568
+ <xs:attributeGroup name="a.internal.ptr">
569
+ <xs:attribute name="target" type="xs:IDREF"/>
570
+ <xs:attribute name="xpointer"/>
571
+ <xs:attributeGroup ref="xlink:simpleLink"/>
572
+ </xs:attributeGroup>
573
+ <xs:attributeGroup name="a.external.ptr">
574
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
575
+ <xs:attribute name="xpointer"/>
576
+ <xs:attributeGroup ref="xlink:simpleLink"/>
577
+ </xs:attributeGroup>
578
+ <xs:attributeGroup name="a.loc.internal.ptr">
579
+ <xs:attributeGroup ref="xlink:locatorLink"/>
580
+ <xs:attribute name="target" type="xs:IDREF"/>
581
+ <xs:attribute name="xpointer"/>
582
+ </xs:attributeGroup>
583
+ <xs:attributeGroup name="a.loc.external.ptr">
584
+ <xs:attributeGroup ref="xlink:locatorLink"/>
585
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
586
+ <xs:attribute name="xpointer"/>
587
+ </xs:attributeGroup>
588
+ <xs:element name="ead">
589
+ <xs:complexType>
590
+ <xs:sequence>
591
+ <xs:element name="eadheader" type="eadheader"/>
592
+ <xs:element minOccurs="0" name="frontmatter" type="frontmatter"/>
593
+ <xs:element name="archdesc" type="archdesc"/>
594
+ </xs:sequence>
595
+ <xs:attributeGroup ref="a.common"/>
596
+ <xs:attribute name="relatedencoding"/>
597
+ </xs:complexType>
598
+ </xs:element>
599
+ <xs:complexType name="eadheader">
600
+ <xs:sequence>
601
+ <xs:element name="eadid" type="eadid"/>
602
+ <xs:element name="filedesc" type="filedesc"/>
603
+ <xs:element minOccurs="0" name="profiledesc" type="profiledesc"/>
604
+ <xs:element minOccurs="0" name="revisiondesc" type="revisiondesc"/>
605
+ </xs:sequence>
606
+ <xs:attributeGroup ref="a.common"/>
607
+ <xs:attribute default="iso639-2b" name="langencoding" type="xs:NMTOKEN"/>
608
+ <xs:attribute default="iso15924" name="scriptencoding" type="xs:NMTOKEN"/>
609
+ <xs:attribute default="iso8601" name="dateencoding" type="xs:NMTOKEN"/>
610
+ <xs:attribute default="iso3166-1" name="countryencoding" type="xs:NMTOKEN"/>
611
+ <xs:attribute default="iso15511" name="repositoryencoding" type="xs:NMTOKEN"/>
612
+ <xs:attribute name="relatedencoding"/>
613
+ <xs:attribute name="findaidstatus" type="xs:NMTOKEN"/>
614
+ <xs:attribute name="encodinganalog"/>
615
+ </xs:complexType>
616
+ <xs:complexType mixed="true" name="eadid">
617
+ <xs:attribute name="publicid"/>
618
+ <xs:attribute name="urn"/>
619
+ <xs:attribute name="url"/>
620
+ <xs:attributeGroup ref="am.countrycode"/>
621
+ <xs:attribute name="mainagencycode" type="xs:NMTOKEN"/>
622
+ <xs:attribute name="identifier"/>
623
+ <xs:attribute name="encodinganalog"/>
624
+ </xs:complexType>
625
+ <xs:complexType name="filedesc">
626
+ <xs:sequence>
627
+ <xs:element name="titlestmt" type="titlestmt"/>
628
+ <xs:element minOccurs="0" name="editionstmt" type="editionstmt"/>
629
+ <xs:element minOccurs="0" name="publicationstmt" type="publicationstmt"/>
630
+ <xs:element minOccurs="0" name="seriesstmt" type="seriesstmt"/>
631
+ <xs:element minOccurs="0" name="notestmt" type="notestmt"/>
632
+ </xs:sequence>
633
+ <xs:attributeGroup ref="a.common"/>
634
+ <xs:attribute name="encodinganalog"/>
635
+ </xs:complexType>
636
+ <xs:complexType name="titlestmt">
637
+ <xs:sequence>
638
+ <xs:element maxOccurs="unbounded" name="titleproper" type="titleproper"/>
639
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="subtitle" type="subtitle"/>
640
+ <xs:element minOccurs="0" name="author" type="author"/>
641
+ <xs:element minOccurs="0" name="sponsor" type="sponsor"/>
642
+ </xs:sequence>
643
+ <xs:attributeGroup ref="a.common"/>
644
+ <xs:attribute name="encodinganalog"/>
645
+ </xs:complexType>
646
+ <xs:complexType name="editionstmt">
647
+ <xs:choice maxOccurs="unbounded">
648
+ <xs:element name="edition" type="edition"/>
649
+ <xs:element name="p" type="p"/>
650
+ </xs:choice>
651
+ <xs:attributeGroup ref="a.common"/>
652
+ <xs:attribute name="encodinganalog"/>
653
+ </xs:complexType>
654
+ <xs:complexType name="publicationstmt">
655
+ <xs:choice maxOccurs="unbounded">
656
+ <xs:element name="publisher" type="publisher"/>
657
+ <xs:element name="date" type="date"/>
658
+ <xs:element name="address" type="address"/>
659
+ <xs:element name="num" type="num"/>
660
+ <xs:element name="p" type="p"/>
661
+ </xs:choice>
662
+ <xs:attributeGroup ref="a.common"/>
663
+ <xs:attribute name="encodinganalog"/>
664
+ </xs:complexType>
665
+ <xs:complexType name="seriesstmt">
666
+ <xs:choice maxOccurs="unbounded">
667
+ <xs:element name="titleproper" type="titleproper"/>
668
+ <xs:element name="num" type="num"/>
669
+ <xs:element name="p" type="p"/>
670
+ </xs:choice>
671
+ <xs:attributeGroup ref="a.common"/>
672
+ <xs:attribute name="encodinganalog"/>
673
+ </xs:complexType>
674
+ <xs:complexType name="notestmt">
675
+ <xs:sequence>
676
+ <xs:element maxOccurs="unbounded" name="note" type="note"/>
677
+ </xs:sequence>
678
+ <xs:attributeGroup ref="a.common"/>
679
+ <xs:attribute name="encodinganalog"/>
680
+ </xs:complexType>
681
+ <xs:complexType name="profiledesc">
682
+ <xs:sequence>
683
+ <xs:element minOccurs="0" name="creation" type="creation"/>
684
+ <xs:element minOccurs="0" name="langusage" type="langusage"/>
685
+ <xs:element minOccurs="0" name="descrules" type="descrules"/>
686
+ </xs:sequence>
687
+ <xs:attributeGroup ref="a.common"/>
688
+ <xs:attribute name="encodinganalog"/>
689
+ </xs:complexType>
690
+ <xs:complexType mixed="true" name="creation">
691
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
692
+ <xs:group ref="m.phrase.basic"/>
693
+ <xs:element name="date" type="date"/>
694
+ </xs:choice>
695
+ <xs:attributeGroup ref="a.common"/>
696
+ <xs:attribute name="encodinganalog"/>
697
+ </xs:complexType>
698
+ <xs:complexType mixed="true" name="langusage">
699
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
700
+ <xs:group ref="m.phrase.basic"/>
701
+ <xs:element name="language" type="language"/>
702
+ </xs:choice>
703
+ <xs:attributeGroup ref="a.common"/>
704
+ <xs:attribute name="encodinganalog"/>
705
+ </xs:complexType>
706
+ <xs:complexType mixed="true" name="descrules">
707
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
708
+ <xs:attributeGroup ref="a.common"/>
709
+ <xs:attribute name="encodinganalog"/>
710
+ </xs:complexType>
711
+ <xs:complexType name="revisiondesc">
712
+ <xs:choice>
713
+ <xs:element name="list" type="list"/>
714
+ <xs:element maxOccurs="unbounded" name="change" type="change"/>
715
+ </xs:choice>
716
+ <xs:attributeGroup ref="a.common"/>
717
+ <xs:attribute name="encodinganalog"/>
718
+ </xs:complexType>
719
+ <xs:complexType name="change">
720
+ <xs:sequence>
721
+ <xs:element name="date" type="date"/>
722
+ <xs:element maxOccurs="unbounded" name="item" type="item"/>
723
+ </xs:sequence>
724
+ <xs:attributeGroup ref="a.common"/>
725
+ <xs:attribute name="encodinganalog"/>
726
+ </xs:complexType>
727
+ <xs:complexType name="frontmatter">
728
+ <xs:sequence>
729
+ <xs:element minOccurs="0" name="titlepage" type="titlepage"/>
730
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="div" type="div"/>
731
+ </xs:sequence>
732
+ <xs:attributeGroup ref="a.common"/>
733
+ </xs:complexType>
734
+ <xs:complexType name="titlepage">
735
+ <xs:choice maxOccurs="unbounded">
736
+ <xs:group ref="m.blocks"/>
737
+ <xs:element name="author" type="author"/>
738
+ <xs:element name="date" type="date"/>
739
+ <xs:element name="edition" type="edition"/>
740
+ <xs:element name="num" type="num"/>
741
+ <xs:element name="publisher" type="publisher"/>
742
+ <xs:element name="bibseries" type="bibseries"/>
743
+ <xs:element name="sponsor" type="sponsor"/>
744
+ <xs:element name="titleproper" type="titleproper"/>
745
+ <xs:element name="subtitle" type="subtitle"/>
746
+ </xs:choice>
747
+ <xs:attributeGroup ref="a.common"/>
748
+ </xs:complexType>
749
+ <xs:complexType name="archdesc">
750
+ <xs:sequence>
751
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="runner" type="runner"/>
752
+ <xs:element name="did" type="did"/>
753
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
754
+ </xs:sequence>
755
+ <xs:attributeGroup ref="a.common"/>
756
+ <xs:attribute name="level" type="av.level" use="required"/>
757
+ <xs:attributeGroup ref="a.desc.base"/>
758
+ <xs:attribute name="type" type="xs:NMTOKEN"/>
759
+ <xs:attribute name="relatedencoding"/>
760
+ </xs:complexType>
761
+ <xs:complexType mixed="true" name="runner">
762
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
763
+ <xs:attributeGroup ref="a.common"/>
764
+ <xs:attribute name="placement">
765
+ <xs:simpleType>
766
+ <xs:restriction base="xs:token">
767
+ <xs:enumeration value="header"/>
768
+ <xs:enumeration value="footer"/>
769
+ <xs:enumeration value="watermark"/>
770
+ </xs:restriction>
771
+ </xs:simpleType>
772
+ </xs:attribute>
773
+ <xs:attribute name="role"/>
774
+ </xs:complexType>
775
+ <xs:complexType mixed="true" name="titleproper">
776
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
777
+ <xs:group ref="m.phrase.bare"/>
778
+ <xs:element name="abbr" type="abbr"/>
779
+ <xs:element name="date" type="date"/>
780
+ <xs:element name="expan" type="expan"/>
781
+ <xs:element name="num" type="num"/>
782
+ </xs:choice>
783
+ <xs:attributeGroup ref="a.common"/>
784
+ <xs:attribute name="render" type="av.render"/>
785
+ <xs:attribute name="type"/>
786
+ <xs:attribute name="encodinganalog"/>
787
+ </xs:complexType>
788
+ <xs:complexType mixed="true" name="subtitle">
789
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
790
+ <xs:group ref="m.phrase.bare"/>
791
+ <xs:element name="abbr" type="abbr"/>
792
+ <xs:element name="date" type="date"/>
793
+ <xs:element name="expan" type="expan"/>
794
+ <xs:element name="num" type="num"/>
795
+ </xs:choice>
796
+ <xs:attributeGroup ref="a.common"/>
797
+ <xs:attribute name="encodinganalog"/>
798
+ </xs:complexType>
799
+ <xs:complexType mixed="true" name="author">
800
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
801
+ <xs:attributeGroup ref="a.common"/>
802
+ <xs:attribute name="encodinganalog"/>
803
+ </xs:complexType>
804
+ <xs:complexType mixed="true" name="sponsor">
805
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
806
+ <xs:attributeGroup ref="a.common"/>
807
+ <xs:attribute name="encodinganalog"/>
808
+ </xs:complexType>
809
+ <xs:complexType name="div">
810
+ <xs:sequence>
811
+ <xs:element minOccurs="0" name="head" type="head"/>
812
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.blocks"/>
813
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="div" type="div"/>
814
+ </xs:sequence>
815
+ <xs:attributeGroup ref="a.common"/>
816
+ </xs:complexType>
817
+ <xs:complexType name="did">
818
+ <xs:sequence>
819
+ <xs:element minOccurs="0" name="head" type="head"/>
820
+ <xs:group maxOccurs="unbounded" ref="m.did"/>
821
+ </xs:sequence>
822
+ <xs:attributeGroup ref="a.common"/>
823
+ <xs:attribute name="encodinganalog"/>
824
+ </xs:complexType>
825
+ <xs:complexType mixed="true" name="dimensions">
826
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
827
+ <xs:group ref="m.phrase.basic"/>
828
+ <xs:element name="dimensions" type="dimensions"/>
829
+ </xs:choice>
830
+ <xs:attributeGroup ref="a.common"/>
831
+ <xs:attribute name="label"/>
832
+ <xs:attribute name="type"/>
833
+ <xs:attribute name="unit"/>
834
+ <xs:attribute name="encodinganalog"/>
835
+ </xs:complexType>
836
+ <xs:complexType mixed="true" name="origination">
837
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
838
+ <xs:group ref="m.phrase.basic"/>
839
+ <xs:element name="corpname" type="corpname"/>
840
+ <xs:element name="famname" type="famname"/>
841
+ <xs:element name="name" type="name"/>
842
+ <xs:element name="persname" type="persname"/>
843
+ </xs:choice>
844
+ <xs:attributeGroup ref="a.common"/>
845
+ <xs:attribute name="label"/>
846
+ <xs:attribute name="encodinganalog"/>
847
+ </xs:complexType>
848
+ <xs:complexType mixed="true" name="repository">
849
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
850
+ <xs:group ref="m.phrase.basic"/>
851
+ <xs:element name="address" type="address"/>
852
+ <xs:element name="corpname" type="corpname"/>
853
+ <xs:element name="name" type="name"/>
854
+ <xs:element name="subarea" type="subarea"/>
855
+ </xs:choice>
856
+ <xs:attributeGroup ref="a.common"/>
857
+ <xs:attribute name="label"/>
858
+ <xs:attribute name="encodinganalog"/>
859
+ </xs:complexType>
860
+ <xs:complexType mixed="true" name="subarea">
861
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
862
+ <xs:attributeGroup ref="a.common"/>
863
+ <xs:attribute name="encodinganalog"/>
864
+ </xs:complexType>
865
+ <xs:complexType mixed="true" name="unitdate">
866
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.basic"/>
867
+ <xs:attributeGroup ref="a.common"/>
868
+ <xs:attribute name="label"/>
869
+ <xs:attribute name="type">
870
+ <xs:simpleType>
871
+ <xs:restriction base="xs:token">
872
+ <xs:enumeration value="bulk"/>
873
+ <xs:enumeration value="inclusive"/>
874
+ </xs:restriction>
875
+ </xs:simpleType>
876
+ </xs:attribute>
877
+ <xs:attribute name="datechar"/>
878
+ <xs:attributeGroup ref="am.dates.era"/>
879
+ <xs:attributeGroup ref="am.dates.calendar"/>
880
+ <xs:attributeGroup ref="am.date.normal"/>
881
+ <xs:attribute name="certainty"/>
882
+ <xs:attribute name="encodinganalog"/>
883
+ </xs:complexType>
884
+ <xs:complexType mixed="true" name="unittitle">
885
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
886
+ <xs:group ref="m.phrase.basic"/>
887
+ <xs:group ref="m.access"/>
888
+ <xs:element name="unitdate" type="unitdate"/>
889
+ <xs:element name="num" type="num"/>
890
+ <xs:element name="date" type="date"/>
891
+ <xs:element name="bibseries" type="bibseries"/>
892
+ <xs:element name="edition" type="edition"/>
893
+ <xs:element name="imprint" type="imprint"/>
894
+ </xs:choice>
895
+ <xs:attributeGroup ref="a.common"/>
896
+ <xs:attribute name="label"/>
897
+ <xs:attribute name="encodinganalog"/>
898
+ <xs:attribute name="type"/>
899
+ </xs:complexType>
900
+ <xs:complexType mixed="true" name="language">
901
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
902
+ <xs:attributeGroup ref="a.common"/>
903
+ <xs:attributeGroup ref="am.langcode"/>
904
+ <xs:attribute name="scriptcode" type="xs:NMTOKEN"/>
905
+ <xs:attribute name="encodinganalog"/>
906
+ </xs:complexType>
907
+ <xs:complexType mixed="true" name="materialspec">
908
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
909
+ <xs:group ref="m.phrase.basic"/>
910
+ <xs:element name="num" type="num"/>
911
+ <xs:element name="materialspec" type="materialspec"/>
912
+ </xs:choice>
913
+ <xs:attributeGroup ref="a.common"/>
914
+ <xs:attribute name="label"/>
915
+ <xs:attribute name="type"/>
916
+ <xs:attribute name="encodinganalog"/>
917
+ </xs:complexType>
918
+ <xs:complexType name="accruals">
919
+ <xs:sequence>
920
+ <xs:element minOccurs="0" name="head" type="head"/>
921
+ <xs:choice maxOccurs="unbounded">
922
+ <xs:group ref="m.blocks"/>
923
+ <xs:element name="accruals" type="accruals"/>
924
+ </xs:choice>
925
+ </xs:sequence>
926
+ <xs:attributeGroup ref="a.common"/>
927
+ <xs:attribute name="encodinganalog"/>
928
+ </xs:complexType>
929
+ <xs:complexType name="accessrestrict">
930
+ <xs:sequence>
931
+ <xs:element minOccurs="0" name="head" type="head"/>
932
+ <xs:choice maxOccurs="unbounded">
933
+ <xs:group ref="m.blocks"/>
934
+ <xs:element name="legalstatus" type="legalstatus"/>
935
+ <xs:element name="accessrestrict" type="accessrestrict"/>
936
+ </xs:choice>
937
+ </xs:sequence>
938
+ <xs:attributeGroup ref="a.common"/>
939
+ <xs:attribute name="encodinganalog"/>
940
+ <xs:attribute name="type"/>
941
+ </xs:complexType>
942
+ <xs:complexType mixed="true" name="legalstatus">
943
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
944
+ <xs:group ref="m.phrase.bare"/>
945
+ <xs:element name="date" type="date"/>
946
+ </xs:choice>
947
+ <xs:attributeGroup ref="a.common"/>
948
+ <xs:attribute name="type" type="xs:NMTOKEN"/>
949
+ </xs:complexType>
950
+ <xs:complexType name="acqinfo">
951
+ <xs:sequence>
952
+ <xs:element minOccurs="0" name="head" type="head"/>
953
+ <xs:choice maxOccurs="unbounded">
954
+ <xs:group ref="m.blocks"/>
955
+ <xs:element name="acqinfo" type="acqinfo"/>
956
+ </xs:choice>
957
+ </xs:sequence>
958
+ <xs:attributeGroup ref="a.common"/>
959
+ <xs:attribute name="encodinganalog"/>
960
+ </xs:complexType>
961
+ <xs:complexType name="altformavail">
962
+ <xs:sequence>
963
+ <xs:element minOccurs="0" name="head" type="head"/>
964
+ <xs:choice maxOccurs="unbounded">
965
+ <xs:group ref="m.blocks"/>
966
+ <xs:element name="altformavail" type="altformavail"/>
967
+ </xs:choice>
968
+ </xs:sequence>
969
+ <xs:attributeGroup ref="a.common"/>
970
+ <xs:attribute name="encodinganalog"/>
971
+ <xs:attribute name="type"/>
972
+ </xs:complexType>
973
+ <xs:complexType name="originalsloc">
974
+ <xs:sequence>
975
+ <xs:element minOccurs="0" name="head" type="head"/>
976
+ <xs:choice maxOccurs="unbounded">
977
+ <xs:group ref="m.blocks"/>
978
+ <xs:element name="originalsloc" type="originalsloc"/>
979
+ </xs:choice>
980
+ </xs:sequence>
981
+ <xs:attributeGroup ref="a.common"/>
982
+ <xs:attribute name="encodinganalog"/>
983
+ <xs:attribute name="type"/>
984
+ </xs:complexType>
985
+ <xs:complexType name="phystech">
986
+ <xs:sequence>
987
+ <xs:element minOccurs="0" name="head" type="head"/>
988
+ <xs:choice maxOccurs="unbounded">
989
+ <xs:group ref="m.blocks"/>
990
+ <xs:element name="phystech" type="phystech"/>
991
+ </xs:choice>
992
+ </xs:sequence>
993
+ <xs:attributeGroup ref="a.common"/>
994
+ <xs:attribute name="encodinganalog"/>
995
+ <xs:attribute name="type"/>
996
+ </xs:complexType>
997
+ <xs:complexType name="appraisal">
998
+ <xs:sequence>
999
+ <xs:element minOccurs="0" name="head" type="head"/>
1000
+ <xs:choice maxOccurs="unbounded">
1001
+ <xs:group ref="m.blocks"/>
1002
+ <xs:element name="appraisal" type="appraisal"/>
1003
+ </xs:choice>
1004
+ </xs:sequence>
1005
+ <xs:attributeGroup ref="a.common"/>
1006
+ <xs:attribute name="encodinganalog"/>
1007
+ </xs:complexType>
1008
+ <xs:complexType name="custodhist">
1009
+ <xs:sequence>
1010
+ <xs:element minOccurs="0" name="head" type="head"/>
1011
+ <xs:choice maxOccurs="unbounded">
1012
+ <xs:group ref="m.blocks"/>
1013
+ <xs:element name="custodhist" type="custodhist"/>
1014
+ <xs:element name="acqinfo" type="acqinfo"/>
1015
+ </xs:choice>
1016
+ </xs:sequence>
1017
+ <xs:attributeGroup ref="a.common"/>
1018
+ <xs:attribute name="encodinganalog"/>
1019
+ </xs:complexType>
1020
+ <xs:complexType name="prefercite">
1021
+ <xs:sequence>
1022
+ <xs:element minOccurs="0" name="head" type="head"/>
1023
+ <xs:choice maxOccurs="unbounded">
1024
+ <xs:group ref="m.blocks"/>
1025
+ <xs:element name="prefercite" type="prefercite"/>
1026
+ </xs:choice>
1027
+ </xs:sequence>
1028
+ <xs:attributeGroup ref="a.common"/>
1029
+ <xs:attribute name="encodinganalog"/>
1030
+ </xs:complexType>
1031
+ <xs:complexType name="processinfo">
1032
+ <xs:sequence>
1033
+ <xs:element minOccurs="0" name="head" type="head"/>
1034
+ <xs:choice maxOccurs="unbounded">
1035
+ <xs:group ref="m.blocks"/>
1036
+ <xs:element name="processinfo" type="processinfo"/>
1037
+ </xs:choice>
1038
+ </xs:sequence>
1039
+ <xs:attributeGroup ref="a.common"/>
1040
+ <xs:attribute name="type"/>
1041
+ <xs:attribute name="encodinganalog"/>
1042
+ </xs:complexType>
1043
+ <xs:complexType name="userestrict">
1044
+ <xs:sequence>
1045
+ <xs:element minOccurs="0" name="head" type="head"/>
1046
+ <xs:choice maxOccurs="unbounded">
1047
+ <xs:group ref="m.blocks"/>
1048
+ <xs:element name="userestrict" type="userestrict"/>
1049
+ </xs:choice>
1050
+ </xs:sequence>
1051
+ <xs:attributeGroup ref="a.common"/>
1052
+ <xs:attribute name="encodinganalog"/>
1053
+ <xs:attribute name="type"/>
1054
+ </xs:complexType>
1055
+ <xs:complexType name="bioghist">
1056
+ <xs:sequence>
1057
+ <xs:element minOccurs="0" name="head" type="head"/>
1058
+ <xs:choice maxOccurs="unbounded">
1059
+ <xs:group ref="m.blocks"/>
1060
+ <xs:element name="bioghist" type="bioghist"/>
1061
+ <xs:element name="dao" type="dao"/>
1062
+ <xs:element name="daogrp" type="daogrp"/>
1063
+ </xs:choice>
1064
+ </xs:sequence>
1065
+ <xs:attributeGroup ref="a.common"/>
1066
+ <xs:attribute name="encodinganalog"/>
1067
+ </xs:complexType>
1068
+ <xs:complexType name="controlaccess">
1069
+ <xs:sequence>
1070
+ <xs:element minOccurs="0" name="head" type="head"/>
1071
+ <xs:choice maxOccurs="unbounded">
1072
+ <xs:group ref="m.blocks"/>
1073
+ <xs:group ref="m.access.title"/>
1074
+ <xs:element name="controlaccess" type="controlaccess"/>
1075
+ </xs:choice>
1076
+ </xs:sequence>
1077
+ <xs:attributeGroup ref="a.common"/>
1078
+ <xs:attribute name="encodinganalog"/>
1079
+ </xs:complexType>
1080
+ <xs:complexType name="odd">
1081
+ <xs:sequence>
1082
+ <xs:element minOccurs="0" name="head" type="head"/>
1083
+ <xs:choice maxOccurs="unbounded">
1084
+ <xs:group ref="m.blocks"/>
1085
+ <xs:element name="dao" type="dao"/>
1086
+ <xs:element name="daogrp" type="daogrp"/>
1087
+ <xs:element name="odd" type="odd"/>
1088
+ </xs:choice>
1089
+ </xs:sequence>
1090
+ <xs:attributeGroup ref="a.common"/>
1091
+ <xs:attribute name="type"/>
1092
+ <xs:attribute name="encodinganalog"/>
1093
+ </xs:complexType>
1094
+ <xs:complexType name="scopecontent">
1095
+ <xs:sequence>
1096
+ <xs:element minOccurs="0" name="head" type="head"/>
1097
+ <xs:choice maxOccurs="unbounded">
1098
+ <xs:group ref="m.blocks"/>
1099
+ <xs:element name="arrangement" type="arrangement"/>
1100
+ <xs:element name="scopecontent" type="scopecontent"/>
1101
+ <xs:element name="dao" type="dao"/>
1102
+ <xs:element name="daogrp" type="daogrp"/>
1103
+ </xs:choice>
1104
+ </xs:sequence>
1105
+ <xs:attributeGroup ref="a.common"/>
1106
+ <xs:attribute name="encodinganalog"/>
1107
+ </xs:complexType>
1108
+ <xs:complexType name="arrangement">
1109
+ <xs:sequence>
1110
+ <xs:element minOccurs="0" name="head" type="head"/>
1111
+ <xs:choice maxOccurs="unbounded">
1112
+ <xs:group ref="m.blocks"/>
1113
+ <xs:element name="arrangement" type="arrangement"/>
1114
+ </xs:choice>
1115
+ </xs:sequence>
1116
+ <xs:attributeGroup ref="a.common"/>
1117
+ <xs:attribute name="encodinganalog"/>
1118
+ </xs:complexType>
1119
+ <xs:complexType name="bibliography">
1120
+ <xs:sequence>
1121
+ <xs:element minOccurs="0" name="head" type="head"/>
1122
+ <xs:choice maxOccurs="unbounded">
1123
+ <xs:group ref="m.blocks"/>
1124
+ <xs:group ref="m.refs"/>
1125
+ <xs:element name="bibliography" type="bibliography"/>
1126
+ </xs:choice>
1127
+ </xs:sequence>
1128
+ <xs:attributeGroup ref="a.common"/>
1129
+ <xs:attribute name="encodinganalog"/>
1130
+ </xs:complexType>
1131
+ <xs:complexType name="fileplan">
1132
+ <xs:sequence>
1133
+ <xs:element minOccurs="0" name="head" type="head"/>
1134
+ <xs:choice maxOccurs="unbounded">
1135
+ <xs:group ref="m.blocks"/>
1136
+ <xs:element name="fileplan" type="fileplan"/>
1137
+ </xs:choice>
1138
+ </xs:sequence>
1139
+ <xs:attributeGroup ref="a.common"/>
1140
+ <xs:attribute name="encodinganalog"/>
1141
+ </xs:complexType>
1142
+ <xs:complexType name="relatedmaterial">
1143
+ <xs:sequence>
1144
+ <xs:element minOccurs="0" name="head" type="head"/>
1145
+ <xs:choice maxOccurs="unbounded">
1146
+ <xs:group ref="m.blocks"/>
1147
+ <xs:group ref="m.refs"/>
1148
+ <xs:element name="relatedmaterial" type="relatedmaterial"/>
1149
+ </xs:choice>
1150
+ </xs:sequence>
1151
+ <xs:attributeGroup ref="a.common"/>
1152
+ <xs:attribute name="type"/>
1153
+ <xs:attribute name="encodinganalog"/>
1154
+ </xs:complexType>
1155
+ <xs:complexType name="separatedmaterial">
1156
+ <xs:sequence>
1157
+ <xs:element minOccurs="0" name="head" type="head"/>
1158
+ <xs:choice maxOccurs="unbounded">
1159
+ <xs:group ref="m.blocks"/>
1160
+ <xs:group ref="m.refs"/>
1161
+ <xs:element name="separatedmaterial" type="separatedmaterial"/>
1162
+ </xs:choice>
1163
+ </xs:sequence>
1164
+ <xs:attributeGroup ref="a.common"/>
1165
+ <xs:attribute name="type"/>
1166
+ <xs:attribute name="encodinganalog"/>
1167
+ </xs:complexType>
1168
+ <xs:complexType name="otherfindaid">
1169
+ <xs:sequence>
1170
+ <xs:element minOccurs="0" name="head" type="head"/>
1171
+ <xs:choice maxOccurs="unbounded">
1172
+ <xs:group ref="m.blocks"/>
1173
+ <xs:group ref="m.refs"/>
1174
+ <xs:element name="otherfindaid" type="otherfindaid"/>
1175
+ </xs:choice>
1176
+ </xs:sequence>
1177
+ <xs:attributeGroup ref="a.common"/>
1178
+ <xs:attribute name="encodinganalog"/>
1179
+ </xs:complexType>
1180
+ <xs:complexType name="index">
1181
+ <xs:sequence>
1182
+ <xs:element minOccurs="0" name="head" type="head"/>
1183
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.blocks"/>
1184
+ <xs:choice>
1185
+ <xs:sequence>
1186
+ <xs:element minOccurs="0" name="listhead" type="listhead"/>
1187
+ <xs:element maxOccurs="unbounded" name="indexentry" type="indexentry"/>
1188
+ </xs:sequence>
1189
+ <xs:element maxOccurs="unbounded" name="index" type="index"/>
1190
+ </xs:choice>
1191
+ </xs:sequence>
1192
+ <xs:attributeGroup ref="a.common"/>
1193
+ <xs:attribute name="encodinganalog"/>
1194
+ </xs:complexType>
1195
+ <xs:complexType name="indexentry">
1196
+ <xs:sequence>
1197
+ <xs:choice>
1198
+ <xs:element name="namegrp" type="namegrp"/>
1199
+ <xs:group ref="m.access.title"/>
1200
+ </xs:choice>
1201
+ <xs:choice minOccurs="0">
1202
+ <xs:element name="ptrgrp" type="ptrgrp"/>
1203
+ <xs:element name="ptr" type="ptr"/>
1204
+ <xs:element name="ref" type="ref"/>
1205
+ </xs:choice>
1206
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="indexentry" type="indexentry"/>
1207
+ </xs:sequence>
1208
+ <xs:attributeGroup ref="a.common"/>
1209
+ </xs:complexType>
1210
+ <xs:complexType name="namegrp">
1211
+ <xs:choice maxOccurs="unbounded">
1212
+ <xs:group ref="m.access.title"/>
1213
+ <xs:element name="note" type="note"/>
1214
+ </xs:choice>
1215
+ <xs:attributeGroup ref="a.common"/>
1216
+ </xs:complexType>
1217
+ <xs:complexType name="ptrgrp">
1218
+ <xs:choice maxOccurs="unbounded">
1219
+ <xs:element name="ptr" type="ptr"/>
1220
+ <xs:element name="ref" type="ref"/>
1221
+ </xs:choice>
1222
+ <xs:attributeGroup ref="a.common"/>
1223
+ </xs:complexType>
1224
+ <xs:complexType name="dsc">
1225
+ <xs:sequence>
1226
+ <xs:sequence>
1227
+ <xs:element minOccurs="0" name="head" type="head"/>
1228
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.blocks"/>
1229
+ </xs:sequence>
1230
+ <xs:choice>
1231
+ <xs:sequence>
1232
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1233
+ <xs:choice>
1234
+ <xs:sequence maxOccurs="unbounded">
1235
+ <xs:element name="c" type="c"/>
1236
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1237
+ </xs:sequence>
1238
+ <xs:sequence maxOccurs="unbounded">
1239
+ <xs:element name="c01" type="c01"/>
1240
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1241
+ </xs:sequence>
1242
+ </xs:choice>
1243
+ </xs:sequence>
1244
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="dsc" type="dsc"/>
1245
+ </xs:choice>
1246
+ </xs:sequence>
1247
+ <xs:attributeGroup ref="a.common"/>
1248
+ <xs:attribute name="type">
1249
+ <xs:simpleType>
1250
+ <xs:restriction base="xs:token">
1251
+ <xs:enumeration value="analyticover"/>
1252
+ <xs:enumeration value="combined"/>
1253
+ <xs:enumeration value="in-depth"/>
1254
+ <xs:enumeration value="othertype"/>
1255
+ </xs:restriction>
1256
+ </xs:simpleType>
1257
+ </xs:attribute>
1258
+ <xs:attribute name="othertype" type="xs:NMTOKEN"/>
1259
+ <xs:attribute name="encodinganalog"/>
1260
+ <xs:attributeGroup ref="am.dsctab.tpattern"/>
1261
+ </xs:complexType>
1262
+ <xs:complexType name="c">
1263
+ <xs:sequence>
1264
+ <xs:element minOccurs="0" name="head" type="head"/>
1265
+ <xs:element name="did" type="did"/>
1266
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1267
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1268
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1269
+ <xs:element maxOccurs="unbounded" name="c" type="c"/>
1270
+ </xs:sequence>
1271
+ </xs:sequence>
1272
+ <xs:attributeGroup ref="a.desc.c"/>
1273
+ </xs:complexType>
1274
+ <xs:complexType name="c01">
1275
+ <xs:sequence>
1276
+ <xs:element minOccurs="0" name="head" type="head"/>
1277
+ <xs:element name="did" type="did"/>
1278
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1279
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1280
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1281
+ <xs:element maxOccurs="unbounded" name="c02" type="c02"/>
1282
+ </xs:sequence>
1283
+ </xs:sequence>
1284
+ <xs:attributeGroup ref="a.desc.c"/>
1285
+ </xs:complexType>
1286
+ <xs:complexType name="c02">
1287
+ <xs:sequence>
1288
+ <xs:element minOccurs="0" name="head" type="head"/>
1289
+ <xs:element name="did" type="did"/>
1290
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1291
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1292
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1293
+ <xs:element maxOccurs="unbounded" name="c03" type="c03"/>
1294
+ </xs:sequence>
1295
+ </xs:sequence>
1296
+ <xs:attributeGroup ref="a.desc.c"/>
1297
+ </xs:complexType>
1298
+ <xs:complexType name="c03">
1299
+ <xs:sequence>
1300
+ <xs:element minOccurs="0" name="head" type="head"/>
1301
+ <xs:element name="did" type="did"/>
1302
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1303
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1304
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1305
+ <xs:element maxOccurs="unbounded" name="c04" type="c04"/>
1306
+ </xs:sequence>
1307
+ </xs:sequence>
1308
+ <xs:attributeGroup ref="a.desc.c"/>
1309
+ </xs:complexType>
1310
+ <xs:complexType name="c04">
1311
+ <xs:sequence>
1312
+ <xs:element minOccurs="0" name="head" type="head"/>
1313
+ <xs:element name="did" type="did"/>
1314
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1315
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1316
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1317
+ <xs:element maxOccurs="unbounded" name="c05" type="c05"/>
1318
+ </xs:sequence>
1319
+ </xs:sequence>
1320
+ <xs:attributeGroup ref="a.desc.c"/>
1321
+ </xs:complexType>
1322
+ <xs:complexType name="c05">
1323
+ <xs:sequence>
1324
+ <xs:element minOccurs="0" name="head" type="head"/>
1325
+ <xs:element name="did" type="did"/>
1326
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1327
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1328
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1329
+ <xs:element maxOccurs="unbounded" name="c06" type="c06"/>
1330
+ </xs:sequence>
1331
+ </xs:sequence>
1332
+ <xs:attributeGroup ref="a.desc.c"/>
1333
+ </xs:complexType>
1334
+ <xs:complexType name="c06">
1335
+ <xs:sequence>
1336
+ <xs:element minOccurs="0" name="head" type="head"/>
1337
+ <xs:element name="did" type="did"/>
1338
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1339
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1340
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1341
+ <xs:element maxOccurs="unbounded" name="c07" type="c07"/>
1342
+ </xs:sequence>
1343
+ </xs:sequence>
1344
+ <xs:attributeGroup ref="a.desc.c"/>
1345
+ </xs:complexType>
1346
+ <xs:complexType name="c07">
1347
+ <xs:sequence>
1348
+ <xs:element minOccurs="0" name="head" type="head"/>
1349
+ <xs:element name="did" type="did"/>
1350
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1351
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1352
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1353
+ <xs:element maxOccurs="unbounded" name="c08" type="c08"/>
1354
+ </xs:sequence>
1355
+ </xs:sequence>
1356
+ <xs:attributeGroup ref="a.desc.c"/>
1357
+ </xs:complexType>
1358
+ <xs:complexType name="c08">
1359
+ <xs:sequence>
1360
+ <xs:element minOccurs="0" name="head" type="head"/>
1361
+ <xs:element name="did" type="did"/>
1362
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1363
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1364
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1365
+ <xs:element maxOccurs="unbounded" name="c09" type="c09"/>
1366
+ </xs:sequence>
1367
+ </xs:sequence>
1368
+ <xs:attributeGroup ref="a.desc.c"/>
1369
+ </xs:complexType>
1370
+ <xs:complexType name="c09">
1371
+ <xs:sequence>
1372
+ <xs:element minOccurs="0" name="head" type="head"/>
1373
+ <xs:element name="did" type="did"/>
1374
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1375
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1376
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1377
+ <xs:element maxOccurs="unbounded" name="c10" type="c10"/>
1378
+ </xs:sequence>
1379
+ </xs:sequence>
1380
+ <xs:attributeGroup ref="a.desc.c"/>
1381
+ </xs:complexType>
1382
+ <xs:complexType name="c10">
1383
+ <xs:sequence>
1384
+ <xs:element minOccurs="0" name="head" type="head"/>
1385
+ <xs:element name="did" type="did"/>
1386
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1387
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1388
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1389
+ <xs:element maxOccurs="unbounded" name="c11" type="c11"/>
1390
+ </xs:sequence>
1391
+ </xs:sequence>
1392
+ <xs:attributeGroup ref="a.desc.c"/>
1393
+ </xs:complexType>
1394
+ <xs:complexType name="c11">
1395
+ <xs:sequence>
1396
+ <xs:element minOccurs="0" name="head" type="head"/>
1397
+ <xs:element name="did" type="did"/>
1398
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1399
+ <xs:sequence maxOccurs="unbounded" minOccurs="0">
1400
+ <xs:element minOccurs="0" name="thead" type="thead"/>
1401
+ <xs:element maxOccurs="unbounded" name="c12" type="c12"/>
1402
+ </xs:sequence>
1403
+ </xs:sequence>
1404
+ <xs:attributeGroup ref="a.desc.c"/>
1405
+ </xs:complexType>
1406
+ <xs:complexType name="c12">
1407
+ <xs:sequence>
1408
+ <xs:element minOccurs="0" name="head" type="head"/>
1409
+ <xs:element name="did" type="did"/>
1410
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.desc.full"/>
1411
+ </xs:sequence>
1412
+ <xs:attributeGroup ref="a.desc.c"/>
1413
+ </xs:complexType>
1414
+ <xs:complexType mixed="true" name="head">
1415
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1416
+ <xs:attributeGroup ref="a.common"/>
1417
+ <xs:attribute name="althead"/>
1418
+ </xs:complexType>
1419
+ <xs:complexType mixed="true" name="p">
1420
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.para.content"/>
1421
+ <xs:attributeGroup ref="a.common"/>
1422
+ </xs:complexType>
1423
+ <xs:complexType name="dao">
1424
+ <xs:sequence>
1425
+ <xs:element minOccurs="0" name="daodesc" type="daodesc"/>
1426
+ </xs:sequence>
1427
+ <xs:attributeGroup ref="a.common"/>
1428
+ <xs:attributeGroup ref="a.external.ptr"/>
1429
+ </xs:complexType>
1430
+ <xs:complexType name="daodesc">
1431
+ <xs:sequence>
1432
+ <xs:element minOccurs="0" name="head" type="head"/>
1433
+ <xs:group maxOccurs="unbounded" ref="m.blocks"/>
1434
+ </xs:sequence>
1435
+ <xs:attributeGroup ref="a.common"/>
1436
+ </xs:complexType>
1437
+ <xs:complexType name="daogrp">
1438
+ <xs:sequence>
1439
+ <xs:element minOccurs="0" name="daodesc" type="daodesc"/>
1440
+ <xs:choice maxOccurs="unbounded">
1441
+ <xs:element name="daoloc" type="daoloc"/>
1442
+ <xs:group ref="extended.els"/>
1443
+ </xs:choice>
1444
+ </xs:sequence>
1445
+ <xs:attributeGroup ref="a.common"/>
1446
+ <xs:attributeGroup ref="xlink:extendedLink"/>
1447
+ </xs:complexType>
1448
+ <xs:complexType name="daoloc">
1449
+ <xs:sequence>
1450
+ <xs:element minOccurs="0" name="daodesc" type="daodesc"/>
1451
+ </xs:sequence>
1452
+ <xs:attributeGroup ref="a.common"/>
1453
+ <xs:attributeGroup ref="a.loc.external.ptr"/>
1454
+ </xs:complexType>
1455
+ <xs:complexType name="ptr">
1456
+ <xs:attributeGroup ref="a.common"/>
1457
+ <xs:attributeGroup ref="a.internal.ptr"/>
1458
+ </xs:complexType>
1459
+ <xs:complexType mixed="true" name="ref">
1460
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1461
+ <xs:group ref="m.para.content.norefs"/>
1462
+ <xs:element name="bibref" type="bibref"/>
1463
+ <xs:element name="title" type="title"/>
1464
+ <xs:element name="extref" type="extref"/>
1465
+ <xs:element name="archref" type="archref"/>
1466
+ </xs:choice>
1467
+ <xs:attributeGroup ref="a.common"/>
1468
+ <xs:attributeGroup ref="a.internal.ptr"/>
1469
+ </xs:complexType>
1470
+ <xs:complexType mixed="true" name="extref">
1471
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1472
+ <xs:group ref="m.para.content.norefs"/>
1473
+ <xs:element name="bibref" type="bibref"/>
1474
+ <xs:element name="title" type="title"/>
1475
+ <xs:element name="archref" type="archref"/>
1476
+ <xs:element name="ref" type="ref"/>
1477
+ </xs:choice>
1478
+ <xs:attributeGroup ref="a.common"/>
1479
+ <xs:attributeGroup ref="a.external.ptr"/>
1480
+ </xs:complexType>
1481
+ <xs:complexType mixed="true" name="title">
1482
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1483
+ <xs:group ref="m.phrase.bare"/>
1484
+ <xs:element name="date" type="date"/>
1485
+ <xs:element name="num" type="num"/>
1486
+ </xs:choice>
1487
+ <xs:attributeGroup ref="a.common"/>
1488
+ <xs:attribute name="type"/>
1489
+ <xs:attribute name="render" type="av.render"/>
1490
+ <xs:attributeGroup ref="a.access"/>
1491
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
1492
+ <xs:attribute name="xpointer"/>
1493
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1494
+ <xs:attribute name="encodinganalog"/>
1495
+ </xs:complexType>
1496
+ <xs:complexType mixed="true" name="archref">
1497
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1498
+ <xs:group ref="m.phrase.basic.norefs"/>
1499
+ <xs:element name="bibref" type="bibref"/>
1500
+ <xs:element name="ref" type="ref"/>
1501
+ <xs:element name="title" type="title"/>
1502
+ <xs:element name="extref" type="extref"/>
1503
+ <xs:group ref="m.did"/>
1504
+ </xs:choice>
1505
+ <xs:attributeGroup ref="a.common"/>
1506
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
1507
+ <xs:attribute name="xpointer"/>
1508
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1509
+ </xs:complexType>
1510
+ <xs:complexType mixed="true" name="bibref">
1511
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1512
+ <xs:group ref="m.phrase.basic.norefs"/>
1513
+ <xs:element name="edition" type="edition"/>
1514
+ <xs:element name="imprint" type="imprint"/>
1515
+ <xs:element name="name" type="name"/>
1516
+ <xs:element name="num" type="num"/>
1517
+ <xs:element name="bibseries" type="bibseries"/>
1518
+ <xs:element name="ref" type="ref"/>
1519
+ <xs:element name="title" type="title"/>
1520
+ <xs:element name="famname" type="famname"/>
1521
+ <xs:element name="persname" type="persname"/>
1522
+ <xs:element name="corpname" type="corpname"/>
1523
+ <xs:element name="extref" type="extref"/>
1524
+ <xs:element name="archref" type="archref"/>
1525
+ </xs:choice>
1526
+ <xs:attributeGroup ref="a.common"/>
1527
+ <xs:attribute name="entityref" type="xs:ENTITY"/>
1528
+ <xs:attribute name="xpointer"/>
1529
+ <xs:attributeGroup ref="xlink:simpleLink"/>
1530
+ <xs:attribute name="encodinganalog"/>
1531
+ </xs:complexType>
1532
+ <xs:complexType mixed="true" name="edition">
1533
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1534
+ <xs:attributeGroup ref="a.common"/>
1535
+ <xs:attribute name="encodinganalog"/>
1536
+ </xs:complexType>
1537
+ <xs:complexType mixed="true" name="bibseries">
1538
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1539
+ <xs:group ref="m.phrase.bare"/>
1540
+ <xs:element name="title" type="title"/>
1541
+ <xs:element name="num" type="num"/>
1542
+ </xs:choice>
1543
+ <xs:attributeGroup ref="a.common"/>
1544
+ <xs:attribute name="encodinganalog"/>
1545
+ </xs:complexType>
1546
+ <xs:complexType mixed="true" name="imprint">
1547
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1548
+ <xs:group ref="m.phrase.bare"/>
1549
+ <xs:element name="publisher" type="publisher"/>
1550
+ <xs:element name="geogname" type="geogname"/>
1551
+ <xs:element name="date" type="date"/>
1552
+ </xs:choice>
1553
+ <xs:attributeGroup ref="a.common"/>
1554
+ <xs:attribute name="encodinganalog"/>
1555
+ </xs:complexType>
1556
+ <xs:complexType mixed="true" name="publisher">
1557
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1558
+ <xs:attributeGroup ref="a.common"/>
1559
+ <xs:attribute name="encodinganalog"/>
1560
+ </xs:complexType>
1561
+ <xs:complexType mixed="true" name="corpname">
1562
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1563
+ <xs:group ref="m.phrase.bare"/>
1564
+ <xs:element name="subarea" type="subarea"/>
1565
+ </xs:choice>
1566
+ <xs:attributeGroup ref="a.common"/>
1567
+ <xs:attributeGroup ref="a.access"/>
1568
+ <xs:attribute name="role"/>
1569
+ <xs:attribute name="encodinganalog"/>
1570
+ </xs:complexType>
1571
+ <xs:complexType mixed="true" name="famname">
1572
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1573
+ <xs:attributeGroup ref="a.common"/>
1574
+ <xs:attributeGroup ref="a.access"/>
1575
+ <xs:attribute name="role"/>
1576
+ <xs:attribute name="encodinganalog"/>
1577
+ </xs:complexType>
1578
+ <xs:complexType mixed="true" name="geogname">
1579
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1580
+ <xs:attributeGroup ref="a.common"/>
1581
+ <xs:attributeGroup ref="a.access"/>
1582
+ <xs:attribute name="role"/>
1583
+ <xs:attribute name="encodinganalog"/>
1584
+ </xs:complexType>
1585
+ <xs:complexType mixed="true" name="name">
1586
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1587
+ <xs:attributeGroup ref="a.common"/>
1588
+ <xs:attributeGroup ref="a.access"/>
1589
+ <xs:attribute name="role"/>
1590
+ <xs:attribute name="encodinganalog"/>
1591
+ </xs:complexType>
1592
+ <xs:complexType mixed="true" name="persname">
1593
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1594
+ <xs:attributeGroup ref="a.common"/>
1595
+ <xs:attributeGroup ref="a.access"/>
1596
+ <xs:attribute name="role"/>
1597
+ <xs:attribute name="encodinganalog"/>
1598
+ </xs:complexType>
1599
+ <xs:complexType mixed="true" name="date">
1600
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1601
+ <xs:attributeGroup ref="a.common"/>
1602
+ <xs:attribute name="type"/>
1603
+ <xs:attributeGroup ref="am.dates.era"/>
1604
+ <xs:attributeGroup ref="am.dates.calendar"/>
1605
+ <xs:attributeGroup ref="am.date.normal"/>
1606
+ <xs:attribute name="certainty"/>
1607
+ <xs:attribute name="encodinganalog"/>
1608
+ </xs:complexType>
1609
+ <xs:complexType mixed="true" name="num">
1610
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1611
+ <xs:attributeGroup ref="a.common"/>
1612
+ <xs:attribute name="type"/>
1613
+ <xs:attribute name="encodinganalog"/>
1614
+ </xs:complexType>
1615
+ <xs:complexType mixed="true" name="abbr">
1616
+ <xs:attributeGroup ref="a.common"/>
1617
+ <xs:attribute name="expan"/>
1618
+ </xs:complexType>
1619
+ <xs:complexType mixed="true" name="expan">
1620
+ <xs:attributeGroup ref="a.common"/>
1621
+ <xs:attribute name="abbr"/>
1622
+ </xs:complexType>
1623
+ <xs:complexType name="address">
1624
+ <xs:sequence>
1625
+ <xs:element maxOccurs="unbounded" name="addressline" type="addressline"/>
1626
+ </xs:sequence>
1627
+ <xs:attributeGroup ref="a.common"/>
1628
+ </xs:complexType>
1629
+ <xs:complexType mixed="true" name="addressline">
1630
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1631
+ <xs:attributeGroup ref="a.common"/>
1632
+ </xs:complexType>
1633
+ <xs:complexType mixed="true" name="event">
1634
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.para.content"/>
1635
+ <xs:attributeGroup ref="a.common"/>
1636
+ </xs:complexType>
1637
+ <xs:complexType name="list">
1638
+ <xs:sequence>
1639
+ <xs:element minOccurs="0" name="head" type="head"/>
1640
+ <xs:choice>
1641
+ <xs:element maxOccurs="unbounded" name="item" type="item"/>
1642
+ <xs:sequence>
1643
+ <xs:element minOccurs="0" name="listhead" type="listhead"/>
1644
+ <xs:element maxOccurs="unbounded" name="defitem" type="defitem"/>
1645
+ </xs:sequence>
1646
+ </xs:choice>
1647
+ </xs:sequence>
1648
+ <xs:attributeGroup ref="a.common"/>
1649
+ <xs:attribute name="type">
1650
+ <xs:simpleType>
1651
+ <xs:restriction base="xs:token">
1652
+ <xs:enumeration value="simple"/>
1653
+ <xs:enumeration value="deflist"/>
1654
+ <xs:enumeration value="marked"/>
1655
+ <xs:enumeration value="ordered"/>
1656
+ </xs:restriction>
1657
+ </xs:simpleType>
1658
+ </xs:attribute>
1659
+ <xs:attribute name="mark"/>
1660
+ <xs:attribute name="numeration">
1661
+ <xs:simpleType>
1662
+ <xs:restriction base="xs:token">
1663
+ <xs:enumeration value="arabic"/>
1664
+ <xs:enumeration value="upperalpha"/>
1665
+ <xs:enumeration value="loweralpha"/>
1666
+ <xs:enumeration value="upperroman"/>
1667
+ <xs:enumeration value="lowerroman"/>
1668
+ </xs:restriction>
1669
+ </xs:simpleType>
1670
+ </xs:attribute>
1671
+ <xs:attribute name="continuation">
1672
+ <xs:simpleType>
1673
+ <xs:restriction base="xs:token">
1674
+ <xs:enumeration value="continues"/>
1675
+ <xs:enumeration value="starts"/>
1676
+ </xs:restriction>
1677
+ </xs:simpleType>
1678
+ </xs:attribute>
1679
+ </xs:complexType>
1680
+ <xs:complexType name="defitem">
1681
+ <xs:sequence>
1682
+ <xs:element name="label" type="label"/>
1683
+ <xs:element name="item" type="item"/>
1684
+ </xs:sequence>
1685
+ <xs:attributeGroup ref="a.common"/>
1686
+ </xs:complexType>
1687
+ <xs:complexType mixed="true" name="label">
1688
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.plus"/>
1689
+ <xs:attributeGroup ref="a.common"/>
1690
+ </xs:complexType>
1691
+ <xs:complexType name="listhead">
1692
+ <xs:sequence>
1693
+ <xs:element minOccurs="0" name="head01" type="head01"/>
1694
+ <xs:element minOccurs="0" name="head02" type="head02"/>
1695
+ </xs:sequence>
1696
+ <xs:attributeGroup ref="a.common"/>
1697
+ </xs:complexType>
1698
+ <xs:complexType mixed="true" name="head01">
1699
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1700
+ <xs:attributeGroup ref="a.common"/>
1701
+ </xs:complexType>
1702
+ <xs:complexType mixed="true" name="head02">
1703
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.phrase.bare"/>
1704
+ <xs:attributeGroup ref="a.common"/>
1705
+ </xs:complexType>
1706
+ <xs:complexType mixed="true" name="item">
1707
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.para.content"/>
1708
+ <xs:attributeGroup ref="a.common"/>
1709
+ </xs:complexType>
1710
+ <xs:complexType name="note">
1711
+ <xs:group maxOccurs="unbounded" ref="m.blocks"/>
1712
+ <xs:attributeGroup ref="a.common"/>
1713
+ <xs:attribute name="type"/>
1714
+ <xs:attribute name="label"/>
1715
+ <xs:attribute name="show">
1716
+ <xs:simpleType>
1717
+ <xs:restriction base="xs:token">
1718
+ <xs:enumeration value="embed"/>
1719
+ <xs:enumeration value="new"/>
1720
+ </xs:restriction>
1721
+ </xs:simpleType>
1722
+ </xs:attribute>
1723
+ <xs:attribute name="actuate">
1724
+ <xs:simpleType>
1725
+ <xs:restriction base="xs:token">
1726
+ <xs:enumeration value="onload"/>
1727
+ <xs:enumeration value="onrequest"/>
1728
+ </xs:restriction>
1729
+ </xs:simpleType>
1730
+ </xs:attribute>
1731
+ <xs:attribute name="encodinganalog"/>
1732
+ </xs:complexType>
1733
+ <xs:complexType name="thead">
1734
+ <xs:sequence>
1735
+ <xs:element maxOccurs="unbounded" name="row" type="row"/>
1736
+ </xs:sequence>
1737
+ <xs:attributeGroup ref="a.common"/>
1738
+ <xs:attribute name="valign">
1739
+ <xs:simpleType>
1740
+ <xs:restriction base="xs:token">
1741
+ <xs:enumeration value="top"/>
1742
+ <xs:enumeration value="middle"/>
1743
+ <xs:enumeration value="bottom"/>
1744
+ </xs:restriction>
1745
+ </xs:simpleType>
1746
+ </xs:attribute>
1747
+ </xs:complexType>
1748
+ <xs:complexType name="row">
1749
+ <xs:sequence>
1750
+ <xs:element maxOccurs="unbounded" name="entry" type="entry"/>
1751
+ </xs:sequence>
1752
+ <xs:attributeGroup ref="a.common"/>
1753
+ <xs:attribute name="rowsep" type="yesorno"/>
1754
+ <xs:attribute name="valign">
1755
+ <xs:simpleType>
1756
+ <xs:restriction base="xs:token">
1757
+ <xs:enumeration value="top"/>
1758
+ <xs:enumeration value="middle"/>
1759
+ <xs:enumeration value="bottom"/>
1760
+ </xs:restriction>
1761
+ </xs:simpleType>
1762
+ </xs:attribute>
1763
+ </xs:complexType>
1764
+ <xs:complexType mixed="true" name="entry">
1765
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1766
+ <xs:group ref="m.phrase.plus"/>
1767
+ <xs:element name="address" type="address"/>
1768
+ <xs:element name="list" type="list"/>
1769
+ <xs:element name="note" type="note"/>
1770
+ </xs:choice>
1771
+ <xs:attributeGroup ref="a.common"/>
1772
+ <xs:attribute name="colname" type="xs:NMTOKEN"/>
1773
+ <xs:attribute name="namest" type="xs:NMTOKEN"/>
1774
+ <xs:attribute name="nameend" type="xs:NMTOKEN"/>
1775
+ <xs:attribute name="morerows" type="xs:NMTOKEN"/>
1776
+ <xs:attribute name="colsep" type="yesorno"/>
1777
+ <xs:attribute name="rowsep" type="yesorno"/>
1778
+ <xs:attribute name="align">
1779
+ <xs:simpleType>
1780
+ <xs:restriction base="xs:token">
1781
+ <xs:enumeration value="left"/>
1782
+ <xs:enumeration value="right"/>
1783
+ <xs:enumeration value="center"/>
1784
+ <xs:enumeration value="justify"/>
1785
+ <xs:enumeration value="char"/>
1786
+ </xs:restriction>
1787
+ </xs:simpleType>
1788
+ </xs:attribute>
1789
+ <xs:attribute name="char"/>
1790
+ <xs:attribute name="charoff" type="xs:NMTOKEN"/>
1791
+ <xs:attribute name="valign">
1792
+ <xs:simpleType>
1793
+ <xs:restriction base="xs:token">
1794
+ <xs:enumeration value="top"/>
1795
+ <xs:enumeration value="middle"/>
1796
+ <xs:enumeration value="bottom"/>
1797
+ </xs:restriction>
1798
+ </xs:simpleType>
1799
+ </xs:attribute>
1800
+ </xs:complexType>
1801
+ <xs:group name="extended.els">
1802
+ <xs:choice>
1803
+ <xs:element name="resource" type="resource"/>
1804
+ <xs:element name="arc" type="arc"/>
1805
+ <xs:element name="ptrloc" type="ptrloc"/>
1806
+ <xs:element name="extptrloc" type="extptrloc"/>
1807
+ <xs:element name="refloc" type="refloc"/>
1808
+ <xs:element name="extrefloc" type="extrefloc"/>
1809
+ </xs:choice>
1810
+ </xs:group>
1811
+ <xs:complexType name="ptrloc">
1812
+ <xs:attributeGroup ref="a.common"/>
1813
+ <xs:attributeGroup ref="a.loc.internal.ptr"/>
1814
+ </xs:complexType>
1815
+ <xs:complexType name="extptrloc">
1816
+ <xs:attributeGroup ref="a.common"/>
1817
+ <xs:attributeGroup ref="a.loc.external.ptr"/>
1818
+ </xs:complexType>
1819
+ <xs:complexType mixed="true" name="refloc">
1820
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.para.content.norefs"/>
1821
+ <xs:attributeGroup ref="a.common"/>
1822
+ <xs:attributeGroup ref="a.loc.internal.ptr"/>
1823
+ </xs:complexType>
1824
+ <xs:complexType mixed="true" name="extrefloc">
1825
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.para.content.norefs"/>
1826
+ <xs:attributeGroup ref="a.common"/>
1827
+ <xs:attributeGroup ref="a.loc.external.ptr"/>
1828
+ </xs:complexType>
1829
+ <xs:group name="extended">
1830
+ <xs:sequence>
1831
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
1832
+ <xs:element name="resource" type="resource"/>
1833
+ <xs:element name="arc" type="arc"/>
1834
+ </xs:choice>
1835
+ </xs:sequence>
1836
+ </xs:group>
1837
+ <xs:attributeGroup name="extended">
1838
+ <xs:attributeGroup ref="xlink:extendedLink"/>
1839
+ </xs:attributeGroup>
1840
+ <xs:complexType name="arc">
1841
+ <xs:attributeGroup ref="a.common"/>
1842
+ <xs:attributeGroup ref="xlink:arcLink"/>
1843
+ </xs:complexType>
1844
+ <xs:complexType mixed="true" name="resource">
1845
+ <xs:group maxOccurs="unbounded" minOccurs="0" ref="m.render"/>
1846
+ <xs:attributeGroup ref="a.common"/>
1847
+ <xs:attributeGroup ref="xlink:resourceLink"/>
1848
+ </xs:complexType>
1849
+ </xs:schema>
assets/pca_model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1e7d65b41de56028acde706bc9ac34c9945966e0591d8cc67608590c0313dea0
3
+ size 796583
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ chromadb
2
+ joblib
3
+ langchain
4
+ langchain-chroma
5
+ langchain-groq
6
+ langchain-ollama
7
+ scikit-learn
8
+ streamlit
9
+ torch
10
+ transformers