
Xlsx
- 3 installs
- 1 repo stars
- Updated July 28, 2026
- evanfang0054/cc-system-creator-scripts
Helps with ai & agent building tasks.
About
xlsx is a Claude Code skill for ai & agent building. It helps developers move faster with AI-assisted coding.
- xlsx
- AI & Agent Building
- AI-coding skill
Xlsx by the numbers
- 3 all-time installs (skills.sh)
- Ranked #13,677 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/evanfang0054/cc-system-creator-scripts --skill xlsxAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 1 |
| Last updated | July 28, 2026 |
| Repository | evanfang0054/cc-system-creator-scripts ↗ |
What it does
Helps with ai & agent building tasks.
Files
输出要求
所有 Excel 文件
专业字体
- 除非用户另有指示,所有交付物应使用一致的专业字体(如 Arial、Times New Roman)
零公式错误
- 每个 Excel 模型必须以零公式错误交付(#REF!、#DIV/0!、#VALUE!、#N/A、#NAME?)
保留现有模板(更新模板时)
- 修改文件时,研究并精确匹配现有格式、样式和约定
- 不要对已有既定模式的文件强加标准化格式
- 现有模板约定始终优先于这些指南
财务模型
颜色编码标准
除非用户或现有模板另有说明
行业标准颜色约定
- 蓝色文字 (RGB: 0,0,255):硬编码输入值,以及用户会在场景分析中更改的数字
- 黑色文字 (RGB: 0,0,0):所有公式和计算
- 绿色文字 (RGB: 0,128,0):从同一工作簿内其他工作表拉取数据的链接
- 红色文字 (RGB: 255,0,0):指向其他文件的外部链接
- 黄色背景 (RGB: 255,255,0):需要注意的关键假设或需要更新的单元格
数字格式标准
必需格式规则
- 年份:格式化为文本字符串(如 "2024" 而不是 "2,024")
- 货币:使用 $#,##0 格式;始终在标题中注明单位(如 "Revenue ($mm)")
- 零值:使用数字格式将所有零显示为 "-",包括百分比(如 "$#,##0;($#,##0);-")
- 百分比:默认使用 0.0% 格式(一位小数)
- 倍数:估值倍数(EV/EBITDA、P/E)格式化为 0.0x
- 负数:使用括号 (123) 而不是减号 -123
公式构建规则
假设放置
- 将所有假设(增长率、利润率、倍数等)放在单独的假设单元格中
- 在公式中使用单元格引用而不是硬编码值
- 示例:使用 =B5(1+$B$6) 而不是 =B51.05
公式错误预防
- 验证所有单元格引用正确
- 检查范围中的差一错误
- 确保所有预测期间的公式一致
- 用边缘情况测试(零值、负数)
- 验证没有意外的循环引用
硬编码的文档要求
- 在单元格旁边注释(如果在表格末尾)。格式:「来源:[系统/文档], [日期], [具体参考], [URL(如适用)]」
- 示例:
- 「来源:Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]」
- 「来源:Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]」
- 「来源:Bloomberg Terminal, 8/15/2025, AAPL US Equity」
- 「来源:FactSet, 8/20/2025, Consensus Estimates Screen」
XLSX 创建、编辑和分析
概述
用户可能要求您创建、编辑或分析 .xlsx 文件的内容。针对不同任务,您有不同的工具和工作流可用。
重要要求
公式重算需要 LibreOffice:可以假设已安装 LibreOffice,用于通过 scripts/recalc.py 脚本重新计算公式值。该脚本在首次运行时自动配置 LibreOffice,包括在 Unix 套接字受限的沙盒环境中(由 scripts/office/soffice.py 处理)
读取和分析数据
使用 pandas 进行数据分析
对于数据分析、可视化和基本操作,使用 pandas,它提供强大的数据操作能力:
import pandas as pd
# 读取 Excel
df = pd.read_excel('file.xlsx') # 默认:第一个工作表
all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # 所有工作表作为字典
# 分析
df.head() # 预览数据
df.info() # 列信息
df.describe() # 统计信息
# 写入 Excel
df.to_excel('output.xlsx', index=False)Excel 文件工作流
关键:使用公式,而非硬编码值
始终使用 Excel 公式而不是在 Python 中计算值后硬编码。 这确保电子表格保持动态和可更新。
错误示例 - 硬编码计算值
# 错误:在 Python 中计算并硬编码结果
total = df['Sales'].sum()
sheet['B10'] = total # 硬编码 5000
# 错误:在 Python 中计算增长率
growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
sheet['C5'] = growth # 硬编码 0.15
# 错误:Python 计算平均值
avg = sum(values) / len(values)
sheet['D20'] = avg # 硬编码 42.5正确示例 - 使用 Excel 公式
# 正确:让 Excel 计算总和
sheet['B10'] = '=SUM(B2:B9)'
# 正确:增长率作为 Excel 公式
sheet['C5'] = '=(C4-C2)/C2'
# 正确:使用 Excel 函数计算平均值
sheet['D20'] = '=AVERAGE(D2:D19)'这适用于所有计算——总计、百分比、比率、差异等。电子表格应能在源数据更改时重新计算。
常用工作流
1. 选择工具:pandas 用于数据处理,openpyxl 用于公式/格式化 2. 创建/加载:创建新工作簿或加载现有文件 3. 修改:添加/编辑数据、公式和格式化 4. 保存:写入文件 5. 重新计算公式(使用公式时必须执行):使用 scripts/recalc.py 脚本
python scripts/recalc.py output.xlsx6. 验证并修复错误:
- 脚本返回包含错误详情的 JSON
- 如果
status是errors_found,检查error_summary获取具体错误类型和位置 - 修复已识别的错误并重新计算
- 常见错误修复:
#REF!:无效的单元格引用#DIV/0!:除以零#VALUE!:公式中使用错误的数据类型#NAME?:无法识别的公式名称
创建新 Excel 文件
# 使用 openpyxl 处理公式和格式化
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
sheet = wb.active
# 添加数据
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
sheet.append(['Row', 'of', 'data'])
# 添加公式
sheet['B2'] = '=SUM(A1:A10)'
# 格式化
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
sheet['A1'].alignment = Alignment(horizontal='center')
# 列宽
sheet.column_dimensions['A'].width = 20
wb.save('output.xlsx')编辑现有 Excel 文件
# 使用 openpyxl 保留公式和格式
from openpyxl import load_workbook
# 加载现有文件
wb = load_workbook('existing.xlsx')
sheet = wb.active # 或 wb['SheetName'] 获取特定工作表
# 处理多个工作表
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
print(f"工作表: {sheet_name}")
# 修改单元格
sheet['A1'] = 'New Value'
sheet.insert_rows(2) # 在位置 2 插入行
sheet.delete_cols(3) # 删除第 3 列
# 添加新工作表
new_sheet = wb.create_sheet('NewSheet')
new_sheet['A1'] = 'Data'
wb.save('modified.xlsx')重新计算公式
由 openpyxl 创建或修改的 Excel 文件包含公式字符串但没有计算值。使用提供的 scripts/recalc.py 脚本重新计算公式:
python scripts/recalc.py <excel_file> [timeout_seconds]示例:
python scripts/recalc.py output.xlsx 30该脚本:
- 首次运行时自动设置 LibreOffice 宏
- 重新计算所有工作表中的所有公式
- 扫描所有单元格中的 Excel 错误(#REF!、#DIV/0! 等)
- 返回包含详细错误位置和计数的 JSON
- 在 Linux 和 macOS 上均可运行
公式验证清单
快速检查以确保公式正确工作:
基本验证
- [ ] 测试 2-3 个示例引用:在构建完整模型之前验证它们能正确获取值
- [ ] 列映射:确认 Excel 列匹配(如第 64 列 = BL,不是 BK)
- [ ] 行偏移:记住 Excel 行是从 1 开始索引的(DataFrame 第 5 行 = Excel 第 6 行)
常见陷阱
- [ ] NaN 处理:使用
pd.notna()检查空值 - [ ] 最右侧列:财年数据通常在第 50+ 列
- [ ] 多重匹配:搜索所有出现,不仅仅是第一个
- [ ] 除以零:在公式中使用
/之前检查分母(#DIV/0!) - [ ] 错误引用:验证所有单元格引用指向预期的单元格(#REF!)
- [ ] 跨工作表引用:使用正确格式(Sheet1!A1)链接工作表
公式测试策略
- [ ] 从小开始:在广泛应用之前先在 2-3 个单元格上测试公式
- [ ] 验证依赖项:检查公式中引用的所有单元格都存在
- [ ] 测试边缘情况:包括零、负数和非常大的值
解读 scripts/recalc.py 输出
脚本返回包含错误详情的 JSON:
{
"status": "success", // 或 "errors_found"
"total_errors": 0, // 总错误数
"total_formulas": 42, // 文件中的公式数量
"error_summary": { // 仅在发现错误时存在
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}最佳实践
库选择
- pandas:最适合数据分析、批量操作和简单数据导出
- openpyxl:最适合复杂格式化、公式和 Excel 特定功能
使用 openpyxl
- 单元格索引从 1 开始(row=1, column=1 指单元格 A1)
- 使用
data_only=True读取计算值:load_workbook('file.xlsx', data_only=True) - 警告:如果以
data_only=True打开并保存,公式将被值替换并永久丢失 - 对于大文件:读取时使用
read_only=True或写入时使用write_only=True - 公式被保留但不被计算 - 使用 scripts/recalc.py 更新值
使用 pandas
- 指定数据类型以避免推断问题:
pd.read_excel('file.xlsx', dtype={'id': str}) - 对于大文件,读取特定列:
pd.read_excel('file.xlsx', usecols=['A', 'C', 'E']) - 正确处理日期:
pd.read_excel('file.xlsx', parse_dates=['date_column'])
代码风格指南
重要:生成 Excel 操作的 Python 代码时:
- 编写简洁的最小化 Python 代码,避免不必要的注释
- 避免冗长的变量名和冗余操作
- 避免不必要的 print 语句
对于 Excel 文件本身:
- 为包含复杂公式或重要假设的单元格添加注释
- 为硬编码值记录数据来源
- 为关键计算和模型部分添加说明
"""合并 DOCX 中具有相同格式的相邻文本运行。
合并具有相同 <w:rPr> 属性的相邻 <w:r> 元素。
适用于段落中的运行以及修订追踪标记(<w:ins>、<w:del>)内部的运行。
同时:
- 移除运行中的 rsid 属性(不影响渲染的修订元数据)
- 移除 proofErr 元素(阻止合并的拼写/语法标记)
"""
from pathlib import Path
import defusedxml.minidom
def merge_runs(input_dir: str) -> tuple[int, str]:
doc_xml = Path(input_dir) / "word" / "document.xml"
if not doc_xml.exists():
return 0, f"错误:{doc_xml} 未找到"
try:
dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8"))
root = dom.documentElement
_remove_elements(root, "proofErr")
_strip_run_rsid_attrs(root)
containers = {run.parentNode for run in _find_elements(root, "r")}
merge_count = 0
for container in containers:
merge_count += _merge_runs_in(container)
doc_xml.write_bytes(dom.toxml(encoding="UTF-8"))
return merge_count, f"已合并 {merge_count} 个运行"
except Exception as e:
return 0, f"错误:{e}"
def _find_elements(root, tag: str) -> list:
results = []
def traverse(node):
if node.nodeType == node.ELEMENT_NODE:
name = node.localName or node.tagName
if name == tag or name.endswith(f":{tag}"):
results.append(node)
for child in node.childNodes:
traverse(child)
traverse(root)
return results
def _get_child(parent, tag: str):
for child in parent.childNodes:
if child.nodeType == child.ELEMENT_NODE:
name = child.localName or child.tagName
if name == tag or name.endswith(f":{tag}"):
return child
return None
def _get_children(parent, tag: str) -> list:
results = []
for child in parent.childNodes:
if child.nodeType == child.ELEMENT_NODE:
name = child.localName or child.tagName
if name == tag or name.endswith(f":{tag}"):
results.append(child)
return results
def _is_adjacent(elem1, elem2) -> bool:
node = elem1.nextSibling
while node:
if node == elem2:
return True
if node.nodeType == node.ELEMENT_NODE:
return False
if node.nodeType == node.TEXT_NODE and node.data.strip():
return False
node = node.nextSibling
return False
def _remove_elements(root, tag: str):
for elem in _find_elements(root, tag):
if elem.parentNode:
elem.parentNode.removeChild(elem)
def _strip_run_rsid_attrs(root):
for run in _find_elements(root, "r"):
for attr in list(run.attributes.values()):
if "rsid" in attr.name.lower():
run.removeAttribute(attr.name)
def _merge_runs_in(container) -> int:
merge_count = 0
run = _first_child_run(container)
while run:
while True:
next_elem = _next_element_sibling(run)
if next_elem and _is_run(next_elem) and _can_merge(run, next_elem):
_merge_run_content(run, next_elem)
container.removeChild(next_elem)
merge_count += 1
else:
break
_consolidate_text(run)
run = _next_sibling_run(run)
return merge_count
def _first_child_run(container):
for child in container.childNodes:
if child.nodeType == child.ELEMENT_NODE and _is_run(child):
return child
return None
def _next_element_sibling(node):
sibling = node.nextSibling
while sibling:
if sibling.nodeType == sibling.ELEMENT_NODE:
return sibling
sibling = sibling.nextSibling
return None
def _next_sibling_run(node):
sibling = node.nextSibling
while sibling:
if sibling.nodeType == sibling.ELEMENT_NODE:
if _is_run(sibling):
return sibling
sibling = sibling.nextSibling
return None
def _is_run(node) -> bool:
name = node.localName or node.tagName
return name == "r" or name.endswith(":r")
def _can_merge(run1, run2) -> bool:
rpr1 = _get_child(run1, "rPr")
rpr2 = _get_child(run2, "rPr")
if (rpr1 is None) != (rpr2 is None):
return False
if rpr1 is None:
return True
return rpr1.toxml() == rpr2.toxml()
def _merge_run_content(target, source):
for child in list(source.childNodes):
if child.nodeType == child.ELEMENT_NODE:
name = child.localName or child.tagName
if name != "rPr" and not name.endswith(":rPr"):
target.appendChild(child)
def _consolidate_text(run):
t_elements = _get_children(run, "t")
for i in range(len(t_elements) - 1, 0, -1):
curr, prev = t_elements[i], t_elements[i - 1]
if _is_adjacent(prev, curr):
prev_text = prev.firstChild.data if prev.firstChild else ""
curr_text = curr.firstChild.data if curr.firstChild else ""
merged = prev_text + curr_text
if prev.firstChild:
prev.firstChild.data = merged
else:
prev.appendChild(run.ownerDocument.createTextNode(merged))
if merged.startswith(" ") or merged.endswith(" "):
prev.setAttribute("xml:space", "preserve")
elif prev.hasAttribute("xml:space"):
prev.removeAttribute("xml:space")
run.removeChild(curr)
"""通过合并相邻的 w:ins 或 w:del 元素来简化修订追踪。
将来自同一作者的相邻 <w:ins> 元素合并为单个元素。
<w:del> 元素同理。这可以减少修订追踪包装器的数量,
使带有大量修订标记的文档更易于处理。
规则:
- 仅合并相同类型的元素(w:ins 与 w:ins,w:del 与 w:del)
- 仅在作者相同时合并(忽略时间戳差异)
- 仅在真正相邻时合并(之间只有空白字符)
"""
import xml.etree.ElementTree as ET
import zipfile
from pathlib import Path
import defusedxml.minidom
WORD_NS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main"
def simplify_redlines(input_dir: str) -> tuple[int, str]:
doc_xml = Path(input_dir) / "word" / "document.xml"
if not doc_xml.exists():
return 0, f"错误:{doc_xml} 未找到"
try:
dom = defusedxml.minidom.parseString(doc_xml.read_text(encoding="utf-8"))
root = dom.documentElement
merge_count = 0
containers = _find_elements(root, "p") + _find_elements(root, "tc")
for container in containers:
merge_count += _merge_tracked_changes_in(container, "ins")
merge_count += _merge_tracked_changes_in(container, "del")
doc_xml.write_bytes(dom.toxml(encoding="UTF-8"))
return merge_count, f"已简化 {merge_count} 个修订追踪"
except Exception as e:
return 0, f"错误:{e}"
def _merge_tracked_changes_in(container, tag: str) -> int:
merge_count = 0
tracked = [
child
for child in container.childNodes
if child.nodeType == child.ELEMENT_NODE and _is_element(child, tag)
]
if len(tracked) < 2:
return 0
i = 0
while i < len(tracked) - 1:
curr = tracked[i]
next_elem = tracked[i + 1]
if _can_merge_tracked(curr, next_elem):
_merge_tracked_content(curr, next_elem)
container.removeChild(next_elem)
tracked.pop(i + 1)
merge_count += 1
else:
i += 1
return merge_count
def _is_element(node, tag: str) -> bool:
name = node.localName or node.tagName
return name == tag or name.endswith(f":{tag}")
def _get_author(elem) -> str:
author = elem.getAttribute("w:author")
if not author:
for attr in elem.attributes.values():
if attr.localName == "author" or attr.name.endswith(":author"):
return attr.value
return author
def _can_merge_tracked(elem1, elem2) -> bool:
if _get_author(elem1) != _get_author(elem2):
return False
node = elem1.nextSibling
while node and node != elem2:
if node.nodeType == node.ELEMENT_NODE:
return False
if node.nodeType == node.TEXT_NODE and node.data.strip():
return False
node = node.nextSibling
return True
def _merge_tracked_content(target, source):
while source.firstChild:
child = source.firstChild
source.removeChild(child)
target.appendChild(child)
def _find_elements(root, tag: str) -> list:
results = []
def traverse(node):
if node.nodeType == node.ELEMENT_NODE:
name = node.localName or node.tagName
if name == tag or name.endswith(f":{tag}"):
results.append(node)
for child in node.childNodes:
traverse(child)
traverse(root)
return results
def get_tracked_change_authors(doc_xml_path: Path) -> dict[str, int]:
if not doc_xml_path.exists():
return {}
try:
tree = ET.parse(doc_xml_path)
root = tree.getroot()
except ET.ParseError:
return {}
namespaces = {"w": WORD_NS}
author_attr = f"{{{WORD_NS}}}author"
authors: dict[str, int] = {}
for tag in ["ins", "del"]:
for elem in root.findall(f".//w:{tag}", namespaces):
author = elem.get(author_attr)
if author:
authors[author] = authors.get(author, 0) + 1
return authors
def _get_authors_from_docx(docx_path: Path) -> dict[str, int]:
try:
with zipfile.ZipFile(docx_path, "r") as zf:
if "word/document.xml" not in zf.namelist():
return {}
with zf.open("word/document.xml") as f:
tree = ET.parse(f)
root = tree.getroot()
namespaces = {"w": WORD_NS}
author_attr = f"{{{WORD_NS}}}author"
authors: dict[str, int] = {}
for tag in ["ins", "del"]:
for elem in root.findall(f".//w:{tag}", namespaces):
author = elem.get(author_attr)
if author:
authors[author] = authors.get(author, 0) + 1
return authors
except (zipfile.BadZipFile, ET.ParseError):
return {}
def infer_author(modified_dir: Path, original_docx: Path, default: str = "Claude") -> str:
modified_xml = modified_dir / "word" / "document.xml"
modified_authors = get_tracked_change_authors(modified_xml)
if not modified_authors:
return default
original_authors = _get_authors_from_docx(original_docx)
new_changes: dict[str, int] = {}
for author, count in modified_authors.items():
original_count = original_authors.get(author, 0)
diff = count - original_count
if diff > 0:
new_changes[author] = diff
if not new_changes:
return default
if len(new_changes) == 1:
return next(iter(new_changes))
raise ValueError(
f"多个作者添加了新修订:{new_changes}。"
"无法推断要验证的作者。"
)
"""将目录打包为 DOCX、PPTX 或 XLSX 文件。
支持自动修复验证、压缩 XML 格式,并创建 Office 文件。
用法:
python pack.py <输入目录> <输出文件> [--original <文件>] [--validate true|false]
示例:
python pack.py unpacked/ output.docx --original input.docx
python pack.py unpacked/ output.pptx --validate false
"""
import argparse
import sys
import shutil
import tempfile
import zipfile
from pathlib import Path
import defusedxml.minidom
from validators import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator
def pack(
input_directory: str,
output_file: str,
original_file: str | None = None,
validate: bool = True,
infer_author_func=None,
) -> tuple[None, str]:
"""
将目录打包为 Office 文件
参数:
input_directory: 输入目录路径
output_file: 输出文件路径
original_file: 原始文件路径(用于验证对比)
validate: 是否运行验证
infer_author_func: 推断作者的函数
返回:
(None, 消息字符串) 元组
"""
input_dir = Path(input_directory)
output_path = Path(output_file)
suffix = output_path.suffix.lower()
if not input_dir.is_dir():
return None, f"错误: {input_dir} 不是目录"
if suffix not in {".docx", ".pptx", ".xlsx"}:
return None, f"错误: {output_file} 必须是 .docx、.pptx 或 .xlsx 文件"
# 如果启用验证且提供了原始文件,则运行验证
if validate and original_file:
original_path = Path(original_file)
if original_path.exists():
success, output = _run_validation(
input_dir, original_path, suffix, infer_author_func
)
if output:
print(output)
if not success:
return None, f"错误: {input_dir} 验证失败"
with tempfile.TemporaryDirectory() as temp_dir:
temp_content_dir = Path(temp_dir) / "content"
shutil.copytree(input_dir, temp_content_dir)
# 压缩所有 XML 文件的格式
for pattern in ["*.xml", "*.rels"]:
for xml_file in temp_content_dir.rglob(pattern):
_condense_xml(xml_file)
output_path.parent.mkdir(parents=True, exist_ok=True)
with zipfile.ZipFile(output_path, "w", zipfile.ZIP_DEFLATED) as zf:
for f in temp_content_dir.rglob("*"):
if f.is_file():
zf.write(f, f.relative_to(temp_content_dir))
return None, f"成功将 {input_dir} 打包为 {output_file}"
def _run_validation(
unpacked_dir: Path,
original_file: Path,
suffix: str,
infer_author_func=None,
) -> tuple[bool, str | None]:
"""
运行验证器对解压后的目录进行验证
参数:
unpacked_dir: 解压后的目录
original_file: 原始文件
suffix: 文件扩展名
infer_author_func: 推断作者的函数
返回:
(是否成功, 输出消息) 元组
"""
output_lines = []
validators = []
if suffix == ".docx":
author = "Claude"
if infer_author_func:
try:
author = infer_author_func(unpacked_dir, original_file)
except ValueError as e:
print(f"警告: {e} 使用默认作者 'Claude'。", file=sys.stderr)
validators = [
DOCXSchemaValidator(unpacked_dir, original_file),
RedliningValidator(unpacked_dir, original_file, author=author),
]
elif suffix == ".pptx":
validators = [PPTXSchemaValidator(unpacked_dir, original_file)]
if not validators:
return True, None
# 执行自动修复并统计修复数量
total_repairs = sum(v.repair() for v in validators)
if total_repairs:
output_lines.append(f"自动修复了 {total_repairs} 个问题")
success = all(v.validate() for v in validators)
if success:
output_lines.append("所有验证通过!")
return success, "\n".join(output_lines) if output_lines else None
def _condense_xml(xml_file: Path) -> None:
"""
压缩 XML 文件格式,移除不必要的空白和注释
参数:
xml_file: XML 文件路径
"""
try:
with open(xml_file, encoding="utf-8") as f:
dom = defusedxml.minidom.parse(f)
# 遍历所有元素,移除空白文本节点和注释
for element in dom.getElementsByTagName("*"):
# 保留 w:t 等文本元素中的内容
if element.tagName.endswith(":t"):
continue
for child in list(element.childNodes):
if (
child.nodeType == child.TEXT_NODE
and child.nodeValue
and child.nodeValue.strip() == ""
) or child.nodeType == child.COMMENT_NODE:
element.removeChild(child)
xml_file.write_bytes(dom.toxml(encoding="UTF-8"))
except Exception as e:
print(f"错误: 解析 {xml_file.name} 失败: {e}", file=sys.stderr)
raise
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="将目录打包为 DOCX、PPTX 或 XLSX 文件"
)
parser.add_argument("input_directory", help="解压后的 Office 文档目录")
parser.add_argument("output_file", help="输出 Office 文件 (.docx/.pptx/.xlsx)")
parser.add_argument(
"--original",
help="用于验证对比的原始文件",
)
parser.add_argument(
"--validate",
type=lambda x: x.lower() == "true",
default=True,
metavar="true|false",
help="运行验证并自动修复(默认: true)",
)
args = parser.parse_args()
_, message = pack(
args.input_directory,
args.output_file,
original_file=args.original,
validate=args.validate,
)
print(message)
if "错误" in message:
sys.exit(1)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="http://schemas.openxmlformats.org/package/2006/content-types"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/content-types"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xs:element name="Types" type="CT_Types"/>
<xs:element name="Default" type="CT_Default"/>
<xs:element name="Override" type="CT_Override"/>
<xs:complexType name="CT_Types">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Default"/>
<xs:element ref="Override"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="CT_Default">
<xs:attribute name="Extension" type="ST_Extension" use="required"/>
<xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
</xs:complexType>
<xs:complexType name="CT_Override">
<xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
<xs:attribute name="PartName" type="xs:anyURI" use="required"/>
</xs:complexType>
<xs:simpleType name="ST_ContentType">
<xs:restriction base="xs:string">
<xs:pattern
value="(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+)|("(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}"\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*"))))*)"
/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ST_Extension">
<xs:restriction base="xs:string">
<xs:pattern
value="([!$&'\(\)\*\+,:=]|(%[0-9a-fA-F][0-9a-fA-F])|[:@]|[a-zA-Z0-9\-_~])+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/" elementFormDefault="qualified" blockDefault="#all">
<xs:import namespace="http://purl.org/dc/elements/1.1/"
schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
<xs:import namespace="http://purl.org/dc/terms/"
schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/>
<xs:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"/>
<xs:element name="coreProperties" type="CT_CoreProperties"/>
<xs:complexType name="CT_CoreProperties">
<xs:all>
<xs:element name="category" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="contentStatus" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element ref="dcterms:created" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:creator" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:description" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:identifier" minOccurs="0" maxOccurs="1"/>
<xs:element name="keywords" minOccurs="0" maxOccurs="1" type="CT_Keywords"/>
<xs:element ref="dc:language" minOccurs="0" maxOccurs="1"/>
<xs:element name="lastModifiedBy" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="lastPrinted" minOccurs="0" maxOccurs="1" type="xs:dateTime"/>
<xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="1"/>
<xs:element name="revision" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element ref="dc:subject" minOccurs="0" maxOccurs="1"/>
<xs:element ref="dc:title" minOccurs="0" maxOccurs="1"/>
<xs:element name="version" minOccurs="0" maxOccurs="1" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="CT_Keywords" mixed="true">
<xs:sequence>
<xs:element name="value" minOccurs="0" maxOccurs="unbounded" type="CT_Keyword"/>
</xs:sequence>
<xs:attribute ref="xml:lang" use="optional"/>
</xs:complexType>
<xs:complexType name="CT_Keyword">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/digital-signature"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/digital-signature"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xsd:element name="SignatureTime" type="CT_SignatureTime"/>
<xsd:element name="RelationshipReference" type="CT_RelationshipReference"/>
<xsd:element name="RelationshipsGroupReference" type="CT_RelationshipsGroupReference"/>
<xsd:complexType name="CT_SignatureTime">
<xsd:sequence>
<xsd:element name="Format" type="ST_Format"/>
<xsd:element name="Value" type="ST_Value"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_RelationshipReference">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="SourceId" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="CT_RelationshipsGroupReference">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="SourceType" type="xsd:anyURI" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ST_Format">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(YYYY)|(YYYY-MM)|(YYYY-MM-DD)|(YYYY-MM-DDThh:mmTZD)|(YYYY-MM-DDThh:mm:ssTZD)|(YYYY-MM-DDThh:mm:ss.sTZD)"
/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Value">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(([0-9][0-9][0-9][0-9]))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):(((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))\.[0-9])(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))"
/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/relationships"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://schemas.openxmlformats.org/package/2006/relationships"
elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
<xsd:element name="Relationships" type="CT_Relationships"/>
<xsd:element name="Relationship" type="CT_Relationship"/>
<xsd:complexType name="CT_Relationships">
<xsd:sequence>
<xsd:element ref="Relationship" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Relationship">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="TargetMode" type="ST_TargetMode" use="optional"/>
<xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Type" type="xsd:anyURI" use="required"/>
<xsd:attribute name="Id" type="xsd:ID" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="ST_TargetMode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="External"/>
<xsd:enumeration value="Internal"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:complexType name="CT_ShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Shape">
<xsd:sequence>
<xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="textlink" type="xsd:string" use="optional"/>
<xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_ConnectorNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Connector">
<xsd:sequence>
<xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence>
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrameNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrame">
<xsd:sequence>
<xsd:element name="nvGraphicFramePr" type="CT_GraphicFrameNonVisual" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GroupShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GroupShape">
<xsd:sequence>
<xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_ObjectChoices">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:simpleType name="ST_MarkerCoordinate">
<xsd:restriction base="xsd:double">
<xsd:minInclusive value="0.0"/>
<xsd:maxInclusive value="1.0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Marker">
<xsd:sequence>
<xsd:element name="x" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
<xsd:element name="y" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_RelSizeAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:group ref="EG_ObjectChoices"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AbsSizeAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_Anchor">
<xsd:choice>
<xsd:element name="relSizeAnchor" type="CT_RelSizeAnchor"/>
<xsd:element name="absSizeAnchor" type="CT_AbsSizeAnchor"/>
</xsd:choice>
</xsd:group>
<xsd:complexType name="CT_Drawing">
<xsd:sequence>
<xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/diagram"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/diagram"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
schemaLocation="shared-relationshipReference.xsd"/>
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:complexType name="CT_CTName">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_CTDescription">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_CTCategory">
<xsd:attribute name="type" type="xsd:anyURI" use="required"/>
<xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_CTCategories">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="cat" type="CT_CTCategory" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ST_ClrAppMethod">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="span"/>
<xsd:enumeration value="cycle"/>
<xsd:enumeration value="repeat"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_HueDir">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="cw"/>
<xsd:enumeration value="ccw"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Colors">
<xsd:sequence>
<xsd:group ref="a:EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="meth" type="ST_ClrAppMethod" use="optional" default="span"/>
<xsd:attribute name="hueDir" type="ST_HueDir" use="optional" default="cw"/>
</xsd:complexType>
<xsd:complexType name="CT_CTStyleLabel">
<xsd:sequence>
<xsd:element name="fillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="linClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="effectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txLinClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txFillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txEffectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_ColorTransform">
<xsd:sequence>
<xsd:element name="title" type="CT_CTName" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_CTDescription" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/>
<xsd:element name="styleLbl" type="CT_CTStyleLabel" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:element name="colorsDef" type="CT_ColorTransform"/>
<xsd:complexType name="CT_ColorTransformHeader">
<xsd:sequence>
<xsd:element name="title" type="CT_CTName" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_CTDescription" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
<xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
</xsd:complexType>
<xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader"/>
<xsd:complexType name="CT_ColorTransformHeaderLst">
<xsd:sequence>
<xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="colorsDefHdrLst" type="CT_ColorTransformHeaderLst"/>
<xsd:simpleType name="ST_PtType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="node"/>
<xsd:enumeration value="asst"/>
<xsd:enumeration value="doc"/>
<xsd:enumeration value="pres"/>
<xsd:enumeration value="parTrans"/>
<xsd:enumeration value="sibTrans"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Pt">
<xsd:sequence>
<xsd:element name="prSet" type="CT_ElemPropSet" minOccurs="0" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
<xsd:element name="t" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="modelId" type="ST_ModelId" use="required"/>
<xsd:attribute name="type" type="ST_PtType" use="optional" default="node"/>
<xsd:attribute name="cxnId" type="ST_ModelId" use="optional" default="0"/>
</xsd:complexType>
<xsd:complexType name="CT_PtList">
<xsd:sequence>
<xsd:element name="pt" type="CT_Pt" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ST_CxnType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="parOf"/>
<xsd:enumeration value="presOf"/>
<xsd:enumeration value="presParOf"/>
<xsd:enumeration value="unknownRelationship"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Cxn">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="modelId" type="ST_ModelId" use="required"/>
<xsd:attribute name="type" type="ST_CxnType" use="optional" default="parOf"/>
<xsd:attribute name="srcId" type="ST_ModelId" use="required"/>
<xsd:attribute name="destId" type="ST_ModelId" use="required"/>
<xsd:attribute name="srcOrd" type="xsd:unsignedInt" use="required"/>
<xsd:attribute name="destOrd" type="xsd:unsignedInt" use="required"/>
<xsd:attribute name="parTransId" type="ST_ModelId" use="optional" default="0"/>
<xsd:attribute name="sibTransId" type="ST_ModelId" use="optional" default="0"/>
<xsd:attribute name="presId" type="xsd:string" use="optional" default=""/>
</xsd:complexType>
<xsd:complexType name="CT_CxnList">
<xsd:sequence>
<xsd:element name="cxn" type="CT_Cxn" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_DataModel">
<xsd:sequence>
<xsd:element name="ptLst" type="CT_PtList"/>
<xsd:element name="cxnLst" type="CT_CxnList" minOccurs="0" maxOccurs="1"/>
<xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0"/>
<xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="dataModel" type="CT_DataModel"/>
<xsd:attributeGroup name="AG_IteratorAttributes">
<xsd:attribute name="axis" type="ST_AxisTypes" use="optional" default="none"/>
<xsd:attribute name="ptType" type="ST_ElementTypes" use="optional" default="all"/>
<xsd:attribute name="hideLastTrans" type="ST_Booleans" use="optional" default="true"/>
<xsd:attribute name="st" type="ST_Ints" use="optional" default="1"/>
<xsd:attribute name="cnt" type="ST_UnsignedInts" use="optional" default="0"/>
<xsd:attribute name="step" type="ST_Ints" use="optional" default="1"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="AG_ConstraintAttributes">
<xsd:attribute name="type" type="ST_ConstraintType" use="required"/>
<xsd:attribute name="for" type="ST_ConstraintRelationship" use="optional" default="self"/>
<xsd:attribute name="forName" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="ptType" type="ST_ElementType" use="optional" default="all"/>
</xsd:attributeGroup>
<xsd:attributeGroup name="AG_ConstraintRefAttributes">
<xsd:attribute name="refType" type="ST_ConstraintType" use="optional" default="none"/>
<xsd:attribute name="refFor" type="ST_ConstraintRelationship" use="optional" default="self"/>
<xsd:attribute name="refForName" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="refPtType" type="ST_ElementType" use="optional" default="all"/>
</xsd:attributeGroup>
<xsd:complexType name="CT_Constraint">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attributeGroup ref="AG_ConstraintAttributes"/>
<xsd:attributeGroup ref="AG_ConstraintRefAttributes"/>
<xsd:attribute name="op" type="ST_BoolOperator" use="optional" default="none"/>
<xsd:attribute name="val" type="xsd:double" use="optional" default="0"/>
<xsd:attribute name="fact" type="xsd:double" use="optional" default="1"/>
</xsd:complexType>
<xsd:complexType name="CT_Constraints">
<xsd:sequence>
<xsd:element name="constr" type="CT_Constraint" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_NumericRule">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attributeGroup ref="AG_ConstraintAttributes"/>
<xsd:attribute name="val" type="xsd:double" use="optional" default="NaN"/>
<xsd:attribute name="fact" type="xsd:double" use="optional" default="NaN"/>
<xsd:attribute name="max" type="xsd:double" use="optional" default="NaN"/>
</xsd:complexType>
<xsd:complexType name="CT_Rules">
<xsd:sequence>
<xsd:element name="rule" type="CT_NumericRule" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_PresentationOf">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attributeGroup ref="AG_IteratorAttributes"/>
</xsd:complexType>
<xsd:simpleType name="ST_LayoutShapeType" final="restriction">
<xsd:union memberTypes="a:ST_ShapeType ST_OutputShapeType"/>
</xsd:simpleType>
<xsd:simpleType name="ST_Index1">
<xsd:restriction base="xsd:unsignedInt">
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Adj">
<xsd:attribute name="idx" type="ST_Index1" use="required"/>
<xsd:attribute name="val" type="xsd:double" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_AdjLst">
<xsd:sequence>
<xsd:element name="adj" type="CT_Adj" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Shape">
<xsd:sequence>
<xsd:element name="adjLst" type="CT_AdjLst" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="rot" type="xsd:double" use="optional" default="0"/>
<xsd:attribute name="type" type="ST_LayoutShapeType" use="optional" default="none"/>
<xsd:attribute ref="r:blip" use="optional"/>
<xsd:attribute name="zOrderOff" type="xsd:int" use="optional" default="0"/>
<xsd:attribute name="hideGeom" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="lkTxEntry" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="blipPhldr" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_Parameter">
<xsd:attribute name="type" type="ST_ParameterId" use="required"/>
<xsd:attribute name="val" type="ST_ParameterVal" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Algorithm">
<xsd:sequence>
<xsd:element name="param" type="CT_Parameter" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="type" type="ST_AlgorithmType" use="required"/>
<xsd:attribute name="rev" type="xsd:unsignedInt" use="optional" default="0"/>
</xsd:complexType>
<xsd:complexType name="CT_LayoutNode">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
<xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
<xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
<xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
<xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
<xsd:element name="varLst" type="CT_LayoutVariablePropertySet" minOccurs="0" maxOccurs="1"/>
<xsd:element name="forEach" type="CT_ForEach"/>
<xsd:element name="layoutNode" type="CT_LayoutNode"/>
<xsd:element name="choose" type="CT_Choose"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="styleLbl" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="chOrder" type="ST_ChildOrderType" use="optional" default="b"/>
<xsd:attribute name="moveWith" type="xsd:string" use="optional" default=""/>
</xsd:complexType>
<xsd:complexType name="CT_ForEach">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
<xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
<xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
<xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
<xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
<xsd:element name="forEach" type="CT_ForEach"/>
<xsd:element name="layoutNode" type="CT_LayoutNode"/>
<xsd:element name="choose" type="CT_Choose"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="ref" type="xsd:string" use="optional" default=""/>
<xsd:attributeGroup ref="AG_IteratorAttributes"/>
</xsd:complexType>
<xsd:complexType name="CT_When">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
<xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
<xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
<xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
<xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
<xsd:element name="forEach" type="CT_ForEach"/>
<xsd:element name="layoutNode" type="CT_LayoutNode"/>
<xsd:element name="choose" type="CT_Choose"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
<xsd:attributeGroup ref="AG_IteratorAttributes"/>
<xsd:attribute name="func" type="ST_FunctionType" use="required"/>
<xsd:attribute name="arg" type="ST_FunctionArgument" use="optional" default="none"/>
<xsd:attribute name="op" type="ST_FunctionOperator" use="required"/>
<xsd:attribute name="val" type="ST_FunctionValue" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Otherwise">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
<xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
<xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
<xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
<xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
<xsd:element name="forEach" type="CT_ForEach"/>
<xsd:element name="layoutNode" type="CT_LayoutNode"/>
<xsd:element name="choose" type="CT_Choose"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
</xsd:complexType>
<xsd:complexType name="CT_Choose">
<xsd:sequence>
<xsd:element name="if" type="CT_When" maxOccurs="unbounded"/>
<xsd:element name="else" type="CT_Otherwise" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
</xsd:complexType>
<xsd:complexType name="CT_SampleData">
<xsd:sequence>
<xsd:element name="dataModel" type="CT_DataModel" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="useDef" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_Category">
<xsd:attribute name="type" type="xsd:anyURI" use="required"/>
<xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Categories">
<xsd:sequence>
<xsd:element name="cat" type="CT_Category" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Name">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Description">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_DiagramDefinition">
<xsd:sequence>
<xsd:element name="title" type="CT_Name" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_Description" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_Categories" minOccurs="0"/>
<xsd:element name="sampData" type="CT_SampleData" minOccurs="0"/>
<xsd:element name="styleData" type="CT_SampleData" minOccurs="0"/>
<xsd:element name="clrData" type="CT_SampleData" minOccurs="0"/>
<xsd:element name="layoutNode" type="CT_LayoutNode"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
<xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/>
</xsd:complexType>
<xsd:element name="layoutDef" type="CT_DiagramDefinition"/>
<xsd:complexType name="CT_DiagramDefinitionHeader">
<xsd:sequence>
<xsd:element name="title" type="CT_Name" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_Description" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_Categories" minOccurs="0"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
<xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
</xsd:complexType>
<xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader"/>
<xsd:complexType name="CT_DiagramDefinitionHeaderLst">
<xsd:sequence>
<xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="layoutDefHdrLst" type="CT_DiagramDefinitionHeaderLst"/>
<xsd:complexType name="CT_RelIds">
<xsd:attribute ref="r:dm" use="required"/>
<xsd:attribute ref="r:lo" use="required"/>
<xsd:attribute ref="r:qs" use="required"/>
<xsd:attribute ref="r:cs" use="required"/>
</xsd:complexType>
<xsd:element name="relIds" type="CT_RelIds"/>
<xsd:simpleType name="ST_ParameterVal">
<xsd:union
memberTypes="ST_DiagramHorizontalAlignment ST_VerticalAlignment ST_ChildDirection ST_ChildAlignment ST_SecondaryChildAlignment ST_LinearDirection ST_SecondaryLinearDirection ST_StartingElement ST_BendPoint ST_ConnectorRouting ST_ArrowheadStyle ST_ConnectorDimension ST_RotationPath ST_CenterShapeMapping ST_NodeHorizontalAlignment ST_NodeVerticalAlignment ST_FallbackDimension ST_TextDirection ST_PyramidAccentPosition ST_PyramidAccentTextMargin ST_TextBlockDirection ST_TextAnchorHorizontal ST_TextAnchorVertical ST_DiagramTextAlignment ST_AutoTextRotation ST_GrowDirection ST_FlowDirection ST_ContinueDirection ST_Breakpoint ST_Offset ST_HierarchyAlignment xsd:int xsd:double xsd:boolean xsd:string ST_ConnectorPoint"
/>
</xsd:simpleType>
<xsd:simpleType name="ST_ModelId">
<xsd:union memberTypes="xsd:int s:ST_Guid"/>
</xsd:simpleType>
<xsd:simpleType name="ST_PrSetCustVal">
<xsd:union memberTypes="s:ST_Percentage xsd:int"/>
</xsd:simpleType>
<xsd:complexType name="CT_ElemPropSet">
<xsd:sequence>
<xsd:element name="presLayoutVars" type="CT_LayoutVariablePropertySet" minOccurs="0"
maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="presAssocID" type="ST_ModelId" use="optional"/>
<xsd:attribute name="presName" type="xsd:string" use="optional"/>
<xsd:attribute name="presStyleLbl" type="xsd:string" use="optional"/>
<xsd:attribute name="presStyleIdx" type="xsd:int" use="optional"/>
<xsd:attribute name="presStyleCnt" type="xsd:int" use="optional"/>
<xsd:attribute name="loTypeId" type="xsd:string" use="optional"/>
<xsd:attribute name="loCatId" type="xsd:string" use="optional"/>
<xsd:attribute name="qsTypeId" type="xsd:string" use="optional"/>
<xsd:attribute name="qsCatId" type="xsd:string" use="optional"/>
<xsd:attribute name="csTypeId" type="xsd:string" use="optional"/>
<xsd:attribute name="csCatId" type="xsd:string" use="optional"/>
<xsd:attribute name="coherent3DOff" type="xsd:boolean" use="optional"/>
<xsd:attribute name="phldrT" type="xsd:string" use="optional"/>
<xsd:attribute name="phldr" type="xsd:boolean" use="optional"/>
<xsd:attribute name="custAng" type="xsd:int" use="optional"/>
<xsd:attribute name="custFlipVert" type="xsd:boolean" use="optional"/>
<xsd:attribute name="custFlipHor" type="xsd:boolean" use="optional"/>
<xsd:attribute name="custSzX" type="xsd:int" use="optional"/>
<xsd:attribute name="custSzY" type="xsd:int" use="optional"/>
<xsd:attribute name="custScaleX" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custScaleY" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custT" type="xsd:boolean" use="optional"/>
<xsd:attribute name="custLinFactX" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custLinFactY" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custLinFactNeighborX" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custLinFactNeighborY" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custRadScaleRad" type="ST_PrSetCustVal" use="optional"/>
<xsd:attribute name="custRadScaleInc" type="ST_PrSetCustVal" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_Direction" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="norm"/>
<xsd:enumeration value="rev"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_HierBranchStyle" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="l"/>
<xsd:enumeration value="r"/>
<xsd:enumeration value="hang"/>
<xsd:enumeration value="std"/>
<xsd:enumeration value="init"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AnimOneStr" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="one"/>
<xsd:enumeration value="branch"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AnimLvlStr" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="lvl"/>
<xsd:enumeration value="ctr"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_OrgChart">
<xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_NodeCount">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="-1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_ChildMax">
<xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_ChildPref">
<xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_BulletEnabled">
<xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_Direction">
<xsd:attribute name="val" type="ST_Direction" default="norm" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_HierBranchStyle">
<xsd:attribute name="val" type="ST_HierBranchStyle" default="std" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_AnimOne">
<xsd:attribute name="val" type="ST_AnimOneStr" default="one" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_AnimLvl">
<xsd:attribute name="val" type="ST_AnimLvlStr" default="none" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_ResizeHandlesStr" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="exact"/>
<xsd:enumeration value="rel"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_ResizeHandles">
<xsd:attribute name="val" type="ST_ResizeHandlesStr" default="rel" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_LayoutVariablePropertySet">
<xsd:sequence>
<xsd:element name="orgChart" type="CT_OrgChart" minOccurs="0" maxOccurs="1"/>
<xsd:element name="chMax" type="CT_ChildMax" minOccurs="0" maxOccurs="1"/>
<xsd:element name="chPref" type="CT_ChildPref" minOccurs="0" maxOccurs="1"/>
<xsd:element name="bulletEnabled" type="CT_BulletEnabled" minOccurs="0" maxOccurs="1"/>
<xsd:element name="dir" type="CT_Direction" minOccurs="0" maxOccurs="1"/>
<xsd:element name="hierBranch" type="CT_HierBranchStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="animOne" type="CT_AnimOne" minOccurs="0" maxOccurs="1"/>
<xsd:element name="animLvl" type="CT_AnimLvl" minOccurs="0" maxOccurs="1"/>
<xsd:element name="resizeHandles" type="CT_ResizeHandles" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_SDName">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_SDDescription">
<xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_SDCategory">
<xsd:attribute name="type" type="xsd:anyURI" use="required"/>
<xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_SDCategories">
<xsd:sequence minOccurs="0" maxOccurs="unbounded">
<xsd:element name="cat" type="CT_SDCategory" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_TextProps">
<xsd:sequence>
<xsd:group ref="a:EG_Text3D" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_StyleLabel">
<xsd:sequence>
<xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/>
<xsd:element name="sp3d" type="a:CT_Shape3D" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txPr" type="CT_TextProps" minOccurs="0" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_StyleDefinition">
<xsd:sequence>
<xsd:element name="title" type="CT_SDName" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_SDDescription" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/>
<xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/>
<xsd:element name="styleLbl" type="CT_StyleLabel" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:element name="styleDef" type="CT_StyleDefinition"/>
<xsd:complexType name="CT_StyleDefinitionHeader">
<xsd:sequence>
<xsd:element name="title" type="CT_SDName" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="desc" type="CT_SDDescription" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
<xsd:attribute name="minVer" type="xsd:string" use="optional"/>
<xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
</xsd:complexType>
<xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader"/>
<xsd:complexType name="CT_StyleDefinitionHeaderLst">
<xsd:sequence>
<xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="styleDefHdrLst" type="CT_StyleDefinitionHeaderLst"/>
<xsd:simpleType name="ST_AlgorithmType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="composite"/>
<xsd:enumeration value="conn"/>
<xsd:enumeration value="cycle"/>
<xsd:enumeration value="hierChild"/>
<xsd:enumeration value="hierRoot"/>
<xsd:enumeration value="pyra"/>
<xsd:enumeration value="lin"/>
<xsd:enumeration value="sp"/>
<xsd:enumeration value="tx"/>
<xsd:enumeration value="snake"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AxisType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="self"/>
<xsd:enumeration value="ch"/>
<xsd:enumeration value="des"/>
<xsd:enumeration value="desOrSelf"/>
<xsd:enumeration value="par"/>
<xsd:enumeration value="ancst"/>
<xsd:enumeration value="ancstOrSelf"/>
<xsd:enumeration value="followSib"/>
<xsd:enumeration value="precedSib"/>
<xsd:enumeration value="follow"/>
<xsd:enumeration value="preced"/>
<xsd:enumeration value="root"/>
<xsd:enumeration value="none"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AxisTypes">
<xsd:list itemType="ST_AxisType"/>
</xsd:simpleType>
<xsd:simpleType name="ST_BoolOperator" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="equ"/>
<xsd:enumeration value="gte"/>
<xsd:enumeration value="lte"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ChildOrderType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="b"/>
<xsd:enumeration value="t"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConstraintType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="alignOff"/>
<xsd:enumeration value="begMarg"/>
<xsd:enumeration value="bendDist"/>
<xsd:enumeration value="begPad"/>
<xsd:enumeration value="b"/>
<xsd:enumeration value="bMarg"/>
<xsd:enumeration value="bOff"/>
<xsd:enumeration value="ctrX"/>
<xsd:enumeration value="ctrXOff"/>
<xsd:enumeration value="ctrY"/>
<xsd:enumeration value="ctrYOff"/>
<xsd:enumeration value="connDist"/>
<xsd:enumeration value="diam"/>
<xsd:enumeration value="endMarg"/>
<xsd:enumeration value="endPad"/>
<xsd:enumeration value="h"/>
<xsd:enumeration value="hArH"/>
<xsd:enumeration value="hOff"/>
<xsd:enumeration value="l"/>
<xsd:enumeration value="lMarg"/>
<xsd:enumeration value="lOff"/>
<xsd:enumeration value="r"/>
<xsd:enumeration value="rMarg"/>
<xsd:enumeration value="rOff"/>
<xsd:enumeration value="primFontSz"/>
<xsd:enumeration value="pyraAcctRatio"/>
<xsd:enumeration value="secFontSz"/>
<xsd:enumeration value="sibSp"/>
<xsd:enumeration value="secSibSp"/>
<xsd:enumeration value="sp"/>
<xsd:enumeration value="stemThick"/>
<xsd:enumeration value="t"/>
<xsd:enumeration value="tMarg"/>
<xsd:enumeration value="tOff"/>
<xsd:enumeration value="userA"/>
<xsd:enumeration value="userB"/>
<xsd:enumeration value="userC"/>
<xsd:enumeration value="userD"/>
<xsd:enumeration value="userE"/>
<xsd:enumeration value="userF"/>
<xsd:enumeration value="userG"/>
<xsd:enumeration value="userH"/>
<xsd:enumeration value="userI"/>
<xsd:enumeration value="userJ"/>
<xsd:enumeration value="userK"/>
<xsd:enumeration value="userL"/>
<xsd:enumeration value="userM"/>
<xsd:enumeration value="userN"/>
<xsd:enumeration value="userO"/>
<xsd:enumeration value="userP"/>
<xsd:enumeration value="userQ"/>
<xsd:enumeration value="userR"/>
<xsd:enumeration value="userS"/>
<xsd:enumeration value="userT"/>
<xsd:enumeration value="userU"/>
<xsd:enumeration value="userV"/>
<xsd:enumeration value="userW"/>
<xsd:enumeration value="userX"/>
<xsd:enumeration value="userY"/>
<xsd:enumeration value="userZ"/>
<xsd:enumeration value="w"/>
<xsd:enumeration value="wArH"/>
<xsd:enumeration value="wOff"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConstraintRelationship" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="self"/>
<xsd:enumeration value="ch"/>
<xsd:enumeration value="des"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ElementType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="all"/>
<xsd:enumeration value="doc"/>
<xsd:enumeration value="node"/>
<xsd:enumeration value="norm"/>
<xsd:enumeration value="nonNorm"/>
<xsd:enumeration value="asst"/>
<xsd:enumeration value="nonAsst"/>
<xsd:enumeration value="parTrans"/>
<xsd:enumeration value="pres"/>
<xsd:enumeration value="sibTrans"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ElementTypes">
<xsd:list itemType="ST_ElementType"/>
</xsd:simpleType>
<xsd:simpleType name="ST_ParameterId" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="horzAlign"/>
<xsd:enumeration value="vertAlign"/>
<xsd:enumeration value="chDir"/>
<xsd:enumeration value="chAlign"/>
<xsd:enumeration value="secChAlign"/>
<xsd:enumeration value="linDir"/>
<xsd:enumeration value="secLinDir"/>
<xsd:enumeration value="stElem"/>
<xsd:enumeration value="bendPt"/>
<xsd:enumeration value="connRout"/>
<xsd:enumeration value="begSty"/>
<xsd:enumeration value="endSty"/>
<xsd:enumeration value="dim"/>
<xsd:enumeration value="rotPath"/>
<xsd:enumeration value="ctrShpMap"/>
<xsd:enumeration value="nodeHorzAlign"/>
<xsd:enumeration value="nodeVertAlign"/>
<xsd:enumeration value="fallback"/>
<xsd:enumeration value="txDir"/>
<xsd:enumeration value="pyraAcctPos"/>
<xsd:enumeration value="pyraAcctTxMar"/>
<xsd:enumeration value="txBlDir"/>
<xsd:enumeration value="txAnchorHorz"/>
<xsd:enumeration value="txAnchorVert"/>
<xsd:enumeration value="txAnchorHorzCh"/>
<xsd:enumeration value="txAnchorVertCh"/>
<xsd:enumeration value="parTxLTRAlign"/>
<xsd:enumeration value="parTxRTLAlign"/>
<xsd:enumeration value="shpTxLTRAlignCh"/>
<xsd:enumeration value="shpTxRTLAlignCh"/>
<xsd:enumeration value="autoTxRot"/>
<xsd:enumeration value="grDir"/>
<xsd:enumeration value="flowDir"/>
<xsd:enumeration value="contDir"/>
<xsd:enumeration value="bkpt"/>
<xsd:enumeration value="off"/>
<xsd:enumeration value="hierAlign"/>
<xsd:enumeration value="bkPtFixedVal"/>
<xsd:enumeration value="stBulletLvl"/>
<xsd:enumeration value="stAng"/>
<xsd:enumeration value="spanAng"/>
<xsd:enumeration value="ar"/>
<xsd:enumeration value="lnSpPar"/>
<xsd:enumeration value="lnSpAfParP"/>
<xsd:enumeration value="lnSpCh"/>
<xsd:enumeration value="lnSpAfChP"/>
<xsd:enumeration value="rtShortDist"/>
<xsd:enumeration value="alignTx"/>
<xsd:enumeration value="pyraLvlNode"/>
<xsd:enumeration value="pyraAcctBkgdNode"/>
<xsd:enumeration value="pyraAcctTxNode"/>
<xsd:enumeration value="srcNode"/>
<xsd:enumeration value="dstNode"/>
<xsd:enumeration value="begPts"/>
<xsd:enumeration value="endPts"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Ints">
<xsd:list itemType="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="ST_UnsignedInts">
<xsd:list itemType="xsd:unsignedInt"/>
</xsd:simpleType>
<xsd:simpleType name="ST_Booleans">
<xsd:list itemType="xsd:boolean"/>
</xsd:simpleType>
<xsd:simpleType name="ST_FunctionType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="cnt"/>
<xsd:enumeration value="pos"/>
<xsd:enumeration value="revPos"/>
<xsd:enumeration value="posEven"/>
<xsd:enumeration value="posOdd"/>
<xsd:enumeration value="var"/>
<xsd:enumeration value="depth"/>
<xsd:enumeration value="maxDepth"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FunctionOperator" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="equ"/>
<xsd:enumeration value="neq"/>
<xsd:enumeration value="gt"/>
<xsd:enumeration value="lt"/>
<xsd:enumeration value="gte"/>
<xsd:enumeration value="lte"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_DiagramHorizontalAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="l"/>
<xsd:enumeration value="ctr"/>
<xsd:enumeration value="r"/>
<xsd:enumeration value="none"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_VerticalAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="t"/>
<xsd:enumeration value="mid"/>
<xsd:enumeration value="b"/>
<xsd:enumeration value="none"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ChildDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="horz"/>
<xsd:enumeration value="vert"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ChildAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="t"/>
<xsd:enumeration value="b"/>
<xsd:enumeration value="l"/>
<xsd:enumeration value="r"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_SecondaryChildAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="t"/>
<xsd:enumeration value="b"/>
<xsd:enumeration value="l"/>
<xsd:enumeration value="r"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_LinearDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="fromL"/>
<xsd:enumeration value="fromR"/>
<xsd:enumeration value="fromT"/>
<xsd:enumeration value="fromB"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_SecondaryLinearDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="fromL"/>
<xsd:enumeration value="fromR"/>
<xsd:enumeration value="fromT"/>
<xsd:enumeration value="fromB"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_StartingElement" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="node"/>
<xsd:enumeration value="trans"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RotationPath" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="alongPath"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_CenterShapeMapping" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="fNode"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_BendPoint" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="beg"/>
<xsd:enumeration value="def"/>
<xsd:enumeration value="end"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConnectorRouting" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="stra"/>
<xsd:enumeration value="bend"/>
<xsd:enumeration value="curve"/>
<xsd:enumeration value="longCurve"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ArrowheadStyle" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="auto"/>
<xsd:enumeration value="arr"/>
<xsd:enumeration value="noArr"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConnectorDimension" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="1D"/>
<xsd:enumeration value="2D"/>
<xsd:enumeration value="cust"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ConnectorPoint" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="auto"/>
<xsd:enumeration value="bCtr"/>
<xsd:enumeration value="ctr"/>
<xsd:enumeration value="midL"/>
<xsd:enumeration value="midR"/>
<xsd:enumeration value="tCtr"/>
<xsd:enumeration value="bL"/>
<xsd:enumeration value="bR"/>
<xsd:enumeration value="tL"/>
<xsd:enumeration value="tR"/>
<xsd:enumeration value="radial"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_NodeHorizontalAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="l"/>
<xsd:enumeration value="ctr"/>
<xsd:enumeration value="r"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_NodeVerticalAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="t"/>
<xsd:enumeration value="mid"/>
<xsd:enumeration value="b"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FallbackDimension" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="1D"/>
<xsd:enumeration value="2D"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TextDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="fromT"/>
<xsd:enumeration value="fromB"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_PyramidAccentPosition" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="bef"/>
<xsd:enumeration value="aft"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_PyramidAccentTextMargin" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="step"/>
<xsd:enumeration value="stack"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TextBlockDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="horz"/>
<xsd:enumeration value="vert"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TextAnchorHorizontal" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="ctr"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_TextAnchorVertical" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="t"/>
<xsd:enumeration value="mid"/>
<xsd:enumeration value="b"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_DiagramTextAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="l"/>
<xsd:enumeration value="ctr"/>
<xsd:enumeration value="r"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_AutoTextRotation" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="upr"/>
<xsd:enumeration value="grav"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_GrowDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="tL"/>
<xsd:enumeration value="tR"/>
<xsd:enumeration value="bL"/>
<xsd:enumeration value="bR"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FlowDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="row"/>
<xsd:enumeration value="col"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_ContinueDirection" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="revDir"/>
<xsd:enumeration value="sameDir"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Breakpoint" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="endCnv"/>
<xsd:enumeration value="bal"/>
<xsd:enumeration value="fixed"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_Offset" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="ctr"/>
<xsd:enumeration value="off"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_HierarchyAlignment" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="tL"/>
<xsd:enumeration value="tR"/>
<xsd:enumeration value="tCtrCh"/>
<xsd:enumeration value="tCtrDes"/>
<xsd:enumeration value="bL"/>
<xsd:enumeration value="bR"/>
<xsd:enumeration value="bCtrCh"/>
<xsd:enumeration value="bCtrDes"/>
<xsd:enumeration value="lT"/>
<xsd:enumeration value="lB"/>
<xsd:enumeration value="lCtrCh"/>
<xsd:enumeration value="lCtrDes"/>
<xsd:enumeration value="rT"/>
<xsd:enumeration value="rB"/>
<xsd:enumeration value="rCtrCh"/>
<xsd:enumeration value="rCtrDes"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FunctionValue" final="restriction">
<xsd:union
memberTypes="xsd:int xsd:boolean ST_Direction ST_HierBranchStyle ST_AnimOneStr ST_AnimLvlStr ST_ResizeHandlesStr"
/>
</xsd:simpleType>
<xsd:simpleType name="ST_VariableType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="orgChart"/>
<xsd:enumeration value="chMax"/>
<xsd:enumeration value="chPref"/>
<xsd:enumeration value="bulEnabled"/>
<xsd:enumeration value="dir"/>
<xsd:enumeration value="hierBranch"/>
<xsd:enumeration value="animOne"/>
<xsd:enumeration value="animLvl"/>
<xsd:enumeration value="resizeHandles"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_FunctionArgument" final="restriction">
<xsd:union memberTypes="ST_VariableType"/>
</xsd:simpleType>
<xsd:simpleType name="ST_OutputShapeType" final="restriction">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="none"/>
<xsd:enumeration value="conn"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
elementFormDefault="qualified"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:element name="lockedCanvas" type="a:CT_GvmlGroupShape"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/picture"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/picture">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:import schemaLocation="shared-relationshipReference.xsd"
namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:complexType name="CT_AnchorClientData">
<xsd:attribute name="fLocksWithSheet" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPrintsWithSheet" type="xsd:boolean" use="optional" default="true"/>
</xsd:complexType>
<xsd:complexType name="CT_ShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Shape">
<xsd:sequence>
<xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="textlink" type="xsd:string" use="optional"/>
<xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_ConnectorNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Connector">
<xsd:sequence>
<xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_PictureNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Picture">
<xsd:sequence>
<xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicalObjectFrameNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GraphicalObjectFrame">
<xsd:sequence>
<xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="macro" type="xsd:string" use="optional"/>
<xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GroupShapeNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_GroupShape">
<xsd:sequence>
<xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_ObjectChoices">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="sp" type="CT_Shape"/>
<xsd:element name="grpSp" type="CT_GroupShape"/>
<xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
<xsd:element name="cxnSp" type="CT_Connector"/>
<xsd:element name="pic" type="CT_Picture"/>
<xsd:element name="contentPart" type="CT_Rel"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="CT_Rel">
<xsd:attribute ref="r:id" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_ColID">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RowID">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Marker">
<xsd:sequence>
<xsd:element name="col" type="ST_ColID"/>
<xsd:element name="colOff" type="a:ST_Coordinate"/>
<xsd:element name="row" type="ST_RowID"/>
<xsd:element name="rowOff" type="a:ST_Coordinate"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ST_EditAs">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="twoCell"/>
<xsd:enumeration value="oneCell"/>
<xsd:enumeration value="absolute"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_TwoCellAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="to" type="CT_Marker"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="editAs" type="ST_EditAs" use="optional" default="twoCell"/>
</xsd:complexType>
<xsd:complexType name="CT_OneCellAnchor">
<xsd:sequence>
<xsd:element name="from" type="CT_Marker"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AbsoluteAnchor">
<xsd:sequence>
<xsd:element name="pos" type="a:CT_Point2D"/>
<xsd:element name="ext" type="a:CT_PositiveSize2D"/>
<xsd:group ref="EG_ObjectChoices"/>
<xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:group name="EG_Anchor">
<xsd:choice>
<xsd:element name="twoCellAnchor" type="CT_TwoCellAnchor"/>
<xsd:element name="oneCellAnchor" type="CT_OneCellAnchor"/>
<xsd:element name="absoluteAnchor" type="CT_AbsoluteAnchor"/>
</xsd:choice>
</xsd:group>
<xsd:complexType name="CT_Drawing">
<xsd:sequence>
<xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="wsDr" type="CT_Drawing"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:dpct="http://schemas.openxmlformats.org/drawingml/2006/picture"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
schemaLocation="dml-main.xsd"/>
<xsd:import schemaLocation="wml.xsd"
namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/>
<xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture"
schemaLocation="dml-picture.xsd"/>
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
schemaLocation="shared-relationshipReference.xsd"/>
<xsd:complexType name="CT_EffectExtent">
<xsd:attribute name="l" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="t" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="r" type="a:ST_Coordinate" use="required"/>
<xsd:attribute name="b" type="a:ST_Coordinate" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_WrapDistance">
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
<xsd:complexType name="CT_Inline">
<xsd:sequence>
<xsd:element name="extent" type="a:CT_PositiveSize2D"/>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
<xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="0" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_WrapText">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="bothSides"/>
<xsd:enumeration value="left"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="largest"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_WrapPath">
<xsd:sequence>
<xsd:element name="start" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/>
<xsd:element name="lineTo" type="a:CT_Point2D" minOccurs="2" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="edited" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapNone"/>
<xsd:complexType name="CT_WrapSquare">
<xsd:sequence>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapTight">
<xsd:sequence>
<xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapThrough">
<xsd:sequence>
<xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_WrapTopBottom">
<xsd:sequence>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
</xsd:complexType>
<xsd:group name="EG_WrapType">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="wrapNone" type="CT_WrapNone" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapSquare" type="CT_WrapSquare" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapTight" type="CT_WrapTight" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapThrough" type="CT_WrapThrough" minOccurs="1" maxOccurs="1"/>
<xsd:element name="wrapTopAndBottom" type="CT_WrapTopBottom" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:simpleType name="ST_PositionOffset">
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
<xsd:simpleType name="ST_AlignH">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="left"/>
<xsd:enumeration value="right"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RelFromH">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="margin"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="column"/>
<xsd:enumeration value="character"/>
<xsd:enumeration value="leftMargin"/>
<xsd:enumeration value="rightMargin"/>
<xsd:enumeration value="insideMargin"/>
<xsd:enumeration value="outsideMargin"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_PosH">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="align" type="ST_AlignH" minOccurs="1" maxOccurs="1"/>
<xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="relativeFrom" type="ST_RelFromH" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_AlignV">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="top"/>
<xsd:enumeration value="bottom"/>
<xsd:enumeration value="center"/>
<xsd:enumeration value="inside"/>
<xsd:enumeration value="outside"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ST_RelFromV">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="margin"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="paragraph"/>
<xsd:enumeration value="line"/>
<xsd:enumeration value="topMargin"/>
<xsd:enumeration value="bottomMargin"/>
<xsd:enumeration value="insideMargin"/>
<xsd:enumeration value="outsideMargin"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_PosV">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="align" type="ST_AlignV" minOccurs="1" maxOccurs="1"/>
<xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="relativeFrom" type="ST_RelFromV" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Anchor">
<xsd:sequence>
<xsd:element name="simplePos" type="a:CT_Point2D"/>
<xsd:element name="positionH" type="CT_PosH"/>
<xsd:element name="positionV" type="CT_PosV"/>
<xsd:element name="extent" type="a:CT_PositiveSize2D"/>
<xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
<xsd:group ref="EG_WrapType"/>
<xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
minOccurs="0" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
<xsd:attribute name="simplePos" type="xsd:boolean"/>
<xsd:attribute name="relativeHeight" type="xsd:unsignedInt" use="required"/>
<xsd:attribute name="behindDoc" type="xsd:boolean" use="required"/>
<xsd:attribute name="locked" type="xsd:boolean" use="required"/>
<xsd:attribute name="layoutInCell" type="xsd:boolean" use="required"/>
<xsd:attribute name="hidden" type="xsd:boolean" use="optional"/>
<xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_TxbxContent">
<xsd:group ref="w:EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
</xsd:complexType>
<xsd:complexType name="CT_TextboxInfo">
<xsd:sequence>
<xsd:element name="txbxContent" type="CT_TxbxContent" minOccurs="1" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:unsignedShort" use="optional" default="0"/>
</xsd:complexType>
<xsd:complexType name="CT_LinkedTextboxInformation">
<xsd:sequence>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:unsignedShort" use="required"/>
<xsd:attribute name="seq" type="xsd:unsignedShort" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingShape">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="cNvCnPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
maxOccurs="1"/>
</xsd:choice>
<xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="txbx" type="CT_TextboxInfo" minOccurs="1" maxOccurs="1"/>
<xsd:element name="linkedTxbx" type="CT_LinkedTextboxInformation" minOccurs="1"
maxOccurs="1"/>
</xsd:choice>
<xsd:element name="bodyPr" type="a:CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="normalEastAsianFlow" type="xsd:boolean" use="optional" default="false"/>
</xsd:complexType>
<xsd:complexType name="CT_GraphicFrame">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
<xsd:element name="cNvFrPr" type="a:CT_NonVisualGraphicFrameProperties" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
<xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingContentPartNonVisual">
<xsd:sequence>
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:element name="cNvContentPartPr" type="a:CT_NonVisualContentPartProperties" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingContentPart">
<xsd:sequence>
<xsd:element name="nvContentPartPr" type="CT_WordprocessingContentPartNonVisual" minOccurs="0" maxOccurs="1"/>
<xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="0" maxOccurs="1"/>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/>
<xsd:attribute ref="r:id" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingGroup">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/>
<xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="wsp"/>
<xsd:element name="grpSp" type="CT_WordprocessingGroup"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
<xsd:element ref="dpct:pic"/>
<xsd:element name="contentPart" type="CT_WordprocessingContentPart"/>
</xsd:choice>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_WordprocessingCanvas">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0" maxOccurs="1"/>
<xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0" maxOccurs="1"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="wsp"/>
<xsd:element ref="dpct:pic"/>
<xsd:element name="contentPart" type="CT_WordprocessingContentPart"/>
<xsd:element ref="wgp"/>
<xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
</xsd:choice>
<xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="wpc" type="CT_WordprocessingCanvas"/>
<xsd:element name="wgp" type="CT_WordprocessingGroup"/>
<xsd:element name="wsp" type="CT_WordprocessingShape"/>
<xsd:element name="inline" type="CT_Inline"/>
<xsd:element name="anchor" type="CT_Anchor"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
elementFormDefault="qualified">
<xsd:complexType name="CT_AdditionalCharacteristics">
<xsd:sequence>
<xsd:element name="characteristic" type="CT_Characteristic" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_Characteristic">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="relation" type="ST_Relation" use="required"/>
<xsd:attribute name="val" type="xsd:string" use="required"/>
<xsd:attribute name="vocabulary" type="xsd:anyURI" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_Relation">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ge"/>
<xsd:enumeration value="le"/>
<xsd:enumeration value="gt"/>
<xsd:enumeration value="lt"/>
<xsd:enumeration value="eq"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="additionalCharacteristics" type="CT_AdditionalCharacteristics"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
elementFormDefault="qualified">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:simpleType name="ST_SourceType">
<xsd:restriction base="s:ST_String">
<xsd:enumeration value="ArticleInAPeriodical"/>
<xsd:enumeration value="Book"/>
<xsd:enumeration value="BookSection"/>
<xsd:enumeration value="JournalArticle"/>
<xsd:enumeration value="ConferenceProceedings"/>
<xsd:enumeration value="Report"/>
<xsd:enumeration value="SoundRecording"/>
<xsd:enumeration value="Performance"/>
<xsd:enumeration value="Art"/>
<xsd:enumeration value="DocumentFromInternetSite"/>
<xsd:enumeration value="InternetSite"/>
<xsd:enumeration value="Film"/>
<xsd:enumeration value="Interview"/>
<xsd:enumeration value="Patent"/>
<xsd:enumeration value="ElectronicSource"/>
<xsd:enumeration value="Case"/>
<xsd:enumeration value="Misc"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_NameListType">
<xsd:sequence>
<xsd:element name="Person" type="CT_PersonType" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_PersonType">
<xsd:sequence>
<xsd:element name="Last" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="First" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Middle" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_NameType">
<xsd:sequence>
<xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_NameOrCorporateType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="Corporate" minOccurs="1" maxOccurs="1" type="s:ST_String"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_AuthorType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="Artist" type="CT_NameType"/>
<xsd:element name="Author" type="CT_NameOrCorporateType"/>
<xsd:element name="BookAuthor" type="CT_NameType"/>
<xsd:element name="Compiler" type="CT_NameType"/>
<xsd:element name="Composer" type="CT_NameType"/>
<xsd:element name="Conductor" type="CT_NameType"/>
<xsd:element name="Counsel" type="CT_NameType"/>
<xsd:element name="Director" type="CT_NameType"/>
<xsd:element name="Editor" type="CT_NameType"/>
<xsd:element name="Interviewee" type="CT_NameType"/>
<xsd:element name="Interviewer" type="CT_NameType"/>
<xsd:element name="Inventor" type="CT_NameType"/>
<xsd:element name="Performer" type="CT_NameOrCorporateType"/>
<xsd:element name="ProducerName" type="CT_NameType"/>
<xsd:element name="Translator" type="CT_NameType"/>
<xsd:element name="Writer" type="CT_NameType"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_SourceType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="AbbreviatedCaseNumber" type="s:ST_String"/>
<xsd:element name="AlbumTitle" type="s:ST_String"/>
<xsd:element name="Author" type="CT_AuthorType"/>
<xsd:element name="BookTitle" type="s:ST_String"/>
<xsd:element name="Broadcaster" type="s:ST_String"/>
<xsd:element name="BroadcastTitle" type="s:ST_String"/>
<xsd:element name="CaseNumber" type="s:ST_String"/>
<xsd:element name="ChapterNumber" type="s:ST_String"/>
<xsd:element name="City" type="s:ST_String"/>
<xsd:element name="Comments" type="s:ST_String"/>
<xsd:element name="ConferenceName" type="s:ST_String"/>
<xsd:element name="CountryRegion" type="s:ST_String"/>
<xsd:element name="Court" type="s:ST_String"/>
<xsd:element name="Day" type="s:ST_String"/>
<xsd:element name="DayAccessed" type="s:ST_String"/>
<xsd:element name="Department" type="s:ST_String"/>
<xsd:element name="Distributor" type="s:ST_String"/>
<xsd:element name="Edition" type="s:ST_String"/>
<xsd:element name="Guid" type="s:ST_String"/>
<xsd:element name="Institution" type="s:ST_String"/>
<xsd:element name="InternetSiteTitle" type="s:ST_String"/>
<xsd:element name="Issue" type="s:ST_String"/>
<xsd:element name="JournalName" type="s:ST_String"/>
<xsd:element name="LCID" type="s:ST_Lang"/>
<xsd:element name="Medium" type="s:ST_String"/>
<xsd:element name="Month" type="s:ST_String"/>
<xsd:element name="MonthAccessed" type="s:ST_String"/>
<xsd:element name="NumberVolumes" type="s:ST_String"/>
<xsd:element name="Pages" type="s:ST_String"/>
<xsd:element name="PatentNumber" type="s:ST_String"/>
<xsd:element name="PeriodicalTitle" type="s:ST_String"/>
<xsd:element name="ProductionCompany" type="s:ST_String"/>
<xsd:element name="PublicationTitle" type="s:ST_String"/>
<xsd:element name="Publisher" type="s:ST_String"/>
<xsd:element name="RecordingNumber" type="s:ST_String"/>
<xsd:element name="RefOrder" type="s:ST_String"/>
<xsd:element name="Reporter" type="s:ST_String"/>
<xsd:element name="SourceType" type="ST_SourceType"/>
<xsd:element name="ShortTitle" type="s:ST_String"/>
<xsd:element name="StandardNumber" type="s:ST_String"/>
<xsd:element name="StateProvince" type="s:ST_String"/>
<xsd:element name="Station" type="s:ST_String"/>
<xsd:element name="Tag" type="s:ST_String"/>
<xsd:element name="Theater" type="s:ST_String"/>
<xsd:element name="ThesisType" type="s:ST_String"/>
<xsd:element name="Title" type="s:ST_String"/>
<xsd:element name="Type" type="s:ST_String"/>
<xsd:element name="URL" type="s:ST_String"/>
<xsd:element name="Version" type="s:ST_String"/>
<xsd:element name="Volume" type="s:ST_String"/>
<xsd:element name="Year" type="s:ST_String"/>
<xsd:element name="YearAccessed" type="s:ST_String"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Sources" type="CT_Sources"/>
<xsd:complexType name="CT_Sources">
<xsd:sequence>
<xsd:element name="Source" type="CT_SourceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="SelectedStyle" type="s:ST_String"/>
<xsd:attribute name="StyleName" type="s:ST_String"/>
<xsd:attribute name="URI" type="s:ST_String"/>
</xsd:complexType>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.openxmlformats.org/officeDocument/2006/customXml"
xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/customXml"
elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all">
<xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
schemaLocation="shared-commonSimpleTypes.xsd"/>
<xsd:complexType name="CT_DatastoreSchemaRef">
<xsd:attribute name="uri" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_DatastoreSchemaRefs">
<xsd:sequence>
<xsd:element name="schemaRef" type="CT_DatastoreSchemaRef" minOccurs="0" maxOccurs="unbounded"
/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CT_DatastoreItem">
<xsd:sequence>
<xsd:element name="schemaRefs" type="CT_DatastoreSchemaRefs" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="itemID" type="s:ST_Guid" use="required"/>
</xsd:complexType>
<xsd:element name="datastoreItem" type="CT_DatastoreItem"/>
</xsd:schema>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:schemas-microsoft-com:office:powerpoint"
targetNamespace="urn:schemas-microsoft-com:office:powerpoint" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:element name="iscomment" type="CT_Empty"/>
<xsd:element name="textdata" type="CT_Rel"/>
<xsd:complexType name="CT_Empty"/>
<xsd:complexType name="CT_Rel">
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>