You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FOElementMapping.java 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. /* $Id$ */
  18. package org.apache.fop.fo;
  19. // Java
  20. import java.util.HashMap;
  21. import org.apache.xmlgraphics.util.QName;
  22. /**
  23. * Element mapping class for all XSL-FO elements.
  24. */
  25. public class FOElementMapping extends ElementMapping {
  26. /** The XSL-FO namespace URI */
  27. public static final String URI = "http://www.w3.org/1999/XSL/Format";
  28. /**
  29. * Basic constructor; inititializes the namespace URI for the fo: namespace
  30. */
  31. public FOElementMapping() {
  32. namespaceURI = URI;
  33. }
  34. /**
  35. * Initializes the collection of valid objects for the fo: namespace
  36. */
  37. protected void initialize() {
  38. if (foObjs == null) {
  39. foObjs = new HashMap<String, Maker>();
  40. // Declarations and Pagination and Layout Formatting Objects
  41. foObjs.put("root", new RootMaker());
  42. foObjs.put("declarations", new DeclarationsMaker());
  43. foObjs.put("color-profile", new ColorProfileMaker());
  44. foObjs.put("bookmark-tree", new BookmarkTreeMaker());
  45. foObjs.put("bookmark", new BookmarkMaker());
  46. foObjs.put("bookmark-title", new BookmarkTitleMaker());
  47. // foObjs.put("page-sequence-wrapper", new PageSequenceWrapperMaker());
  48. foObjs.put("page-sequence", new PageSequenceMaker());
  49. foObjs.put("layout-master-set", new LayoutMasterSetMaker());
  50. foObjs.put("page-sequence-master",
  51. new PageSequenceMasterMaker());
  52. foObjs.put("single-page-master-reference",
  53. new SinglePageMasterReferenceMaker());
  54. foObjs.put("repeatable-page-master-reference",
  55. new RepeatablePageMasterReferenceMaker());
  56. foObjs.put("repeatable-page-master-alternatives",
  57. new RepeatablePageMasterAlternativesMaker());
  58. foObjs.put("conditional-page-master-reference",
  59. new ConditionalPageMasterReferenceMaker());
  60. foObjs.put("simple-page-master",
  61. new SimplePageMasterMaker());
  62. foObjs.put("region-body", new RegionBodyMaker());
  63. foObjs.put("region-before", new RegionBeforeMaker());
  64. foObjs.put("region-after", new RegionAfterMaker());
  65. foObjs.put("region-start", new RegionStartMaker());
  66. foObjs.put("region-end", new RegionEndMaker());
  67. foObjs.put("flow", new FlowMaker());
  68. foObjs.put("static-content", new StaticContentMaker());
  69. foObjs.put("title", new TitleMaker());
  70. // Block-level Formatting Objects
  71. foObjs.put("block", new BlockMaker());
  72. foObjs.put("block-container", new BlockContainerMaker());
  73. // Inline-level Formatting Objects
  74. foObjs.put("bidi-override", new BidiOverrideMaker());
  75. foObjs.put("character",
  76. new CharacterMaker());
  77. foObjs.put("initial-property-set",
  78. new InitialPropertySetMaker());
  79. foObjs.put("external-graphic", new ExternalGraphicMaker());
  80. foObjs.put("instream-foreign-object",
  81. new InstreamForeignObjectMaker());
  82. foObjs.put("inline", new InlineMaker());
  83. foObjs.put("inline-container", new InlineContainerMaker());
  84. foObjs.put("leader", new LeaderMaker());
  85. foObjs.put("page-number", new PageNumberMaker());
  86. foObjs.put("page-number-citation",
  87. new PageNumberCitationMaker());
  88. foObjs.put("page-number-citation-last",
  89. new PageNumberCitationLastMaker());
  90. // Formatting Objects for Tables
  91. foObjs.put("table-and-caption", new TableAndCaptionMaker());
  92. foObjs.put("table", new TableMaker());
  93. foObjs.put("table-column", new TableColumnMaker());
  94. foObjs.put("table-caption", new TableCaptionMaker());
  95. foObjs.put("table-header", new TableHeaderMaker());
  96. foObjs.put("table-footer", new TableFooterMaker());
  97. foObjs.put("table-body", new TableBodyMaker());
  98. foObjs.put("table-row", new TableRowMaker());
  99. foObjs.put("table-cell", new TableCellMaker());
  100. // Formatting Objects for Lists
  101. foObjs.put("list-block", new ListBlockMaker());
  102. foObjs.put("list-item", new ListItemMaker());
  103. foObjs.put("list-item-body", new ListItemBodyMaker());
  104. foObjs.put("list-item-label", new ListItemLabelMaker());
  105. // Dynamic Effects: Link and Multi Formatting Objects
  106. foObjs.put("basic-link", new BasicLinkMaker());
  107. foObjs.put("multi-switch", new MultiSwitchMaker());
  108. foObjs.put("multi-case", new MultiCaseMaker());
  109. foObjs.put("multi-toggle", new MultiToggleMaker());
  110. foObjs.put("multi-properties", new MultiPropertiesMaker());
  111. foObjs.put("multi-property-set",
  112. new MultiPropertySetMaker());
  113. // Out-of-Line Formatting Objects
  114. foObjs.put("float",
  115. new FloatMaker());
  116. foObjs.put("footnote", new FootnoteMaker());
  117. foObjs.put("footnote-body", new FootnoteBodyMaker());
  118. // Other Formatting Objects
  119. foObjs.put("wrapper", new WrapperMaker());
  120. foObjs.put("marker", new MarkerMaker());
  121. foObjs.put("retrieve-marker", new RetrieveMarkerMaker());
  122. foObjs.put("retrieve-table-marker", new RetrieveTableMarkerMaker());
  123. }
  124. }
  125. /** {@inheritDoc} */
  126. public String getStandardPrefix() {
  127. return "fo";
  128. }
  129. /** {@inheritDoc} */
  130. public boolean isAttributeProperty(QName attributeName) {
  131. return true; //All XSL-FO attributes are to be converted to properties.
  132. }
  133. static class RootMaker extends ElementMapping.Maker {
  134. public FONode make(FONode parent) {
  135. return new org.apache.fop.fo.pagination.Root(parent);
  136. }
  137. }
  138. static class DeclarationsMaker extends ElementMapping.Maker {
  139. public FONode make(FONode parent) {
  140. return new org.apache.fop.fo.pagination.Declarations(parent);
  141. }
  142. }
  143. static class ColorProfileMaker extends ElementMapping.Maker {
  144. public FONode make(FONode parent) {
  145. return new org.apache.fop.fo.pagination.ColorProfile(parent);
  146. }
  147. }
  148. static class BookmarkTreeMaker extends ElementMapping.Maker {
  149. public FONode make(FONode parent) {
  150. return new org.apache.fop.fo.pagination.bookmarks.BookmarkTree(parent);
  151. }
  152. }
  153. static class BookmarkMaker extends ElementMapping.Maker {
  154. public FONode make(FONode parent) {
  155. return new org.apache.fop.fo.pagination.bookmarks.Bookmark(parent);
  156. }
  157. }
  158. static class BookmarkTitleMaker extends ElementMapping.Maker {
  159. public FONode make(FONode parent) {
  160. return new org.apache.fop.fo.pagination.bookmarks.BookmarkTitle(parent);
  161. }
  162. }
  163. static class PageSequenceWrapperMaker extends ElementMapping.Maker {
  164. public FONode make(FONode parent) {
  165. return new org.apache.fop.fo.pagination.PageSequenceWrapper(parent);
  166. }
  167. }
  168. static class PageSequenceMaker extends ElementMapping.Maker {
  169. public FONode make(FONode parent) {
  170. return new org.apache.fop.fo.pagination.PageSequence(parent);
  171. }
  172. }
  173. static class LayoutMasterSetMaker extends ElementMapping.Maker {
  174. public FONode make(FONode parent) {
  175. return new org.apache.fop.fo.pagination.LayoutMasterSet(parent);
  176. }
  177. }
  178. static class PageSequenceMasterMaker extends ElementMapping.Maker {
  179. public FONode make(FONode parent) {
  180. return new org.apache.fop.fo.pagination.PageSequenceMaster(parent);
  181. }
  182. }
  183. static class SinglePageMasterReferenceMaker extends ElementMapping.Maker {
  184. public FONode make(FONode parent) {
  185. return new org.apache.fop.fo.pagination.SinglePageMasterReference(parent);
  186. }
  187. }
  188. static class RepeatablePageMasterReferenceMaker extends ElementMapping.Maker {
  189. public FONode make(FONode parent) {
  190. return new org.apache.fop.fo.pagination.RepeatablePageMasterReference(parent);
  191. }
  192. }
  193. static class RepeatablePageMasterAlternativesMaker extends ElementMapping.Maker {
  194. public FONode make(FONode parent) {
  195. return new org.apache.fop.fo.pagination.RepeatablePageMasterAlternatives(parent);
  196. }
  197. }
  198. static class ConditionalPageMasterReferenceMaker extends ElementMapping.Maker {
  199. public FONode make(FONode parent) {
  200. return new org.apache.fop.fo.pagination.ConditionalPageMasterReference(parent);
  201. }
  202. }
  203. static class SimplePageMasterMaker extends ElementMapping.Maker {
  204. public FONode make(FONode parent) {
  205. return new org.apache.fop.fo.pagination.SimplePageMaster(parent);
  206. }
  207. }
  208. static class RegionBodyMaker extends ElementMapping.Maker {
  209. public FONode make(FONode parent) {
  210. return new org.apache.fop.fo.pagination.RegionBody(parent);
  211. }
  212. }
  213. static class RegionBeforeMaker extends ElementMapping.Maker {
  214. public FONode make(FONode parent) {
  215. return new org.apache.fop.fo.pagination.RegionBefore(parent);
  216. }
  217. }
  218. static class RegionAfterMaker extends ElementMapping.Maker {
  219. public FONode make(FONode parent) {
  220. return new org.apache.fop.fo.pagination.RegionAfter(parent);
  221. }
  222. }
  223. static class RegionStartMaker extends ElementMapping.Maker {
  224. public FONode make(FONode parent) {
  225. return new org.apache.fop.fo.pagination.RegionStart(parent);
  226. }
  227. }
  228. static class RegionEndMaker extends ElementMapping.Maker {
  229. public FONode make(FONode parent) {
  230. return new org.apache.fop.fo.pagination.RegionEnd(parent);
  231. }
  232. }
  233. static class FlowMaker extends ElementMapping.Maker {
  234. public FONode make(FONode parent) {
  235. return new org.apache.fop.fo.pagination.Flow(parent);
  236. }
  237. }
  238. static class StaticContentMaker extends ElementMapping.Maker {
  239. public FONode make(FONode parent) {
  240. return new org.apache.fop.fo.pagination.StaticContent(parent);
  241. }
  242. }
  243. static class TitleMaker extends ElementMapping.Maker {
  244. public FONode make(FONode parent) {
  245. return new org.apache.fop.fo.pagination.Title(parent);
  246. }
  247. }
  248. static class BlockMaker extends ElementMapping.Maker {
  249. public FONode make(FONode parent) {
  250. return new org.apache.fop.fo.flow.Block(parent);
  251. }
  252. }
  253. static class BlockContainerMaker extends ElementMapping.Maker {
  254. public FONode make(FONode parent) {
  255. return new org.apache.fop.fo.flow.BlockContainer(parent);
  256. }
  257. }
  258. static class BidiOverrideMaker extends ElementMapping.Maker {
  259. public FONode make(FONode parent) {
  260. return new org.apache.fop.fo.flow.BidiOverride(parent);
  261. }
  262. }
  263. static class CharacterMaker extends ElementMapping.Maker {
  264. public FONode make(FONode parent) {
  265. return new org.apache.fop.fo.flow.Character(parent);
  266. }
  267. }
  268. static class InitialPropertySetMaker extends ElementMapping.Maker {
  269. public FONode make(FONode parent) {
  270. return new org.apache.fop.fo.flow.InitialPropertySet(parent);
  271. }
  272. }
  273. static class ExternalGraphicMaker extends ElementMapping.Maker {
  274. public FONode make(FONode parent) {
  275. return new org.apache.fop.fo.flow.ExternalGraphic(parent);
  276. }
  277. }
  278. static class InstreamForeignObjectMaker extends ElementMapping.Maker {
  279. public FONode make(FONode parent) {
  280. return new org.apache.fop.fo.flow.InstreamForeignObject(parent);
  281. }
  282. }
  283. static class InlineMaker extends ElementMapping.Maker {
  284. public FONode make(FONode parent) {
  285. return new org.apache.fop.fo.flow.Inline(parent);
  286. }
  287. }
  288. static class InlineContainerMaker extends ElementMapping.Maker {
  289. public FONode make(FONode parent) {
  290. return new org.apache.fop.fo.flow.InlineContainer(parent);
  291. }
  292. }
  293. static class LeaderMaker extends ElementMapping.Maker {
  294. public FONode make(FONode parent) {
  295. return new org.apache.fop.fo.flow.Leader(parent);
  296. }
  297. }
  298. static class PageNumberMaker extends ElementMapping.Maker {
  299. public FONode make(FONode parent) {
  300. return new org.apache.fop.fo.flow.PageNumber(parent);
  301. }
  302. }
  303. static class PageNumberCitationMaker extends ElementMapping.Maker {
  304. public FONode make(FONode parent) {
  305. return new org.apache.fop.fo.flow.PageNumberCitation(parent);
  306. }
  307. }
  308. static class PageNumberCitationLastMaker extends ElementMapping.Maker {
  309. public FONode make(FONode parent) {
  310. return new org.apache.fop.fo.flow.PageNumberCitationLast(parent);
  311. }
  312. }
  313. static class TableAndCaptionMaker extends ElementMapping.Maker {
  314. public FONode make(FONode parent) {
  315. return new org.apache.fop.fo.flow.table.TableAndCaption(parent);
  316. }
  317. }
  318. static class TableMaker extends ElementMapping.Maker {
  319. public FONode make(FONode parent) {
  320. return new org.apache.fop.fo.flow.table.Table(parent);
  321. }
  322. }
  323. static class TableColumnMaker extends ElementMapping.Maker {
  324. public FONode make(FONode parent) {
  325. return new org.apache.fop.fo.flow.table.TableColumn(parent);
  326. }
  327. }
  328. static class TableCaptionMaker extends ElementMapping.Maker {
  329. public FONode make(FONode parent) {
  330. return new org.apache.fop.fo.flow.table.TableCaption(parent);
  331. }
  332. }
  333. static class TableBodyMaker extends ElementMapping.Maker {
  334. public FONode make(FONode parent) {
  335. return new org.apache.fop.fo.flow.table.TableBody(parent);
  336. }
  337. }
  338. static class TableHeaderMaker extends ElementMapping.Maker {
  339. public FONode make(FONode parent) {
  340. return new org.apache.fop.fo.flow.table.TableHeader(parent);
  341. }
  342. }
  343. static class TableFooterMaker extends ElementMapping.Maker {
  344. public FONode make(FONode parent) {
  345. return new org.apache.fop.fo.flow.table.TableFooter(parent);
  346. }
  347. }
  348. static class TableRowMaker extends ElementMapping.Maker {
  349. public FONode make(FONode parent) {
  350. return new org.apache.fop.fo.flow.table.TableRow(parent);
  351. }
  352. }
  353. static class TableCellMaker extends ElementMapping.Maker {
  354. public FONode make(FONode parent) {
  355. return new org.apache.fop.fo.flow.table.TableCell(parent);
  356. }
  357. }
  358. static class ListBlockMaker extends ElementMapping.Maker {
  359. public FONode make(FONode parent) {
  360. return new org.apache.fop.fo.flow.ListBlock(parent);
  361. }
  362. }
  363. static class ListItemMaker extends ElementMapping.Maker {
  364. public FONode make(FONode parent) {
  365. return new org.apache.fop.fo.flow.ListItem(parent);
  366. }
  367. }
  368. static class ListItemBodyMaker extends ElementMapping.Maker {
  369. public FONode make(FONode parent) {
  370. return new org.apache.fop.fo.flow.ListItemBody(parent);
  371. }
  372. }
  373. static class ListItemLabelMaker extends ElementMapping.Maker {
  374. public FONode make(FONode parent) {
  375. return new org.apache.fop.fo.flow.ListItemLabel(parent);
  376. }
  377. }
  378. static class BasicLinkMaker extends ElementMapping.Maker {
  379. public FONode make(FONode parent) {
  380. return new org.apache.fop.fo.flow.BasicLink(parent);
  381. }
  382. }
  383. static class MultiSwitchMaker extends ElementMapping.Maker {
  384. public FONode make(FONode parent) {
  385. return new org.apache.fop.fo.flow.MultiSwitch(parent);
  386. }
  387. }
  388. static class MultiCaseMaker extends ElementMapping.Maker {
  389. public FONode make(FONode parent) {
  390. return new org.apache.fop.fo.flow.MultiCase(parent);
  391. }
  392. }
  393. static class MultiToggleMaker extends ElementMapping.Maker {
  394. public FONode make(FONode parent) {
  395. return new org.apache.fop.fo.flow.MultiToggle(parent);
  396. }
  397. }
  398. static class MultiPropertiesMaker extends ElementMapping.Maker {
  399. public FONode make(FONode parent) {
  400. return new org.apache.fop.fo.flow.MultiProperties(parent);
  401. }
  402. }
  403. static class MultiPropertySetMaker extends ElementMapping.Maker {
  404. public FONode make(FONode parent) {
  405. return new org.apache.fop.fo.flow.MultiPropertySet(parent);
  406. }
  407. }
  408. static class FloatMaker extends ElementMapping.Maker {
  409. public FONode make(FONode parent) {
  410. return new org.apache.fop.fo.flow.Float(parent);
  411. }
  412. }
  413. static class FootnoteMaker extends ElementMapping.Maker {
  414. public FONode make(FONode parent) {
  415. return new org.apache.fop.fo.flow.Footnote(parent);
  416. }
  417. }
  418. static class FootnoteBodyMaker extends ElementMapping.Maker {
  419. public FONode make(FONode parent) {
  420. return new org.apache.fop.fo.flow.FootnoteBody(parent);
  421. }
  422. }
  423. static class WrapperMaker extends ElementMapping.Maker {
  424. public FONode make(FONode parent) {
  425. return new org.apache.fop.fo.flow.Wrapper(parent);
  426. }
  427. }
  428. static class MarkerMaker extends ElementMapping.Maker {
  429. public FONode make(FONode parent) {
  430. return new org.apache.fop.fo.flow.Marker(parent);
  431. }
  432. }
  433. static class RetrieveMarkerMaker extends ElementMapping.Maker {
  434. public FONode make(FONode parent) {
  435. return new org.apache.fop.fo.flow.RetrieveMarker(parent);
  436. }
  437. }
  438. static class RetrieveTableMarkerMaker extends ElementMapping.Maker {
  439. public FONode make(FONode parent) {
  440. return new org.apache.fop.fo.flow.RetrieveTableMarker(parent);
  441. }
  442. }
  443. }