1 /*
2 * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
3 */
4 /*
5 * Licensed to the Apache Software Foundation (ASF) under one or more
6 * contributor license agreements. See the NOTICE file distributed with
7 * this work for additional information regarding copyright ownership.
8 * The ASF licenses this file to You under the Apache License, Version 2.0
9 * (the "License"); you may not use this file except in compliance with
10 * the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 */
20
21 package com.sun.org.apache.xml.internal.serializer;
22
23 import java.util.List;
24
25 /**
26 * This interface has methods associated with the XSLT xsl:output attribues
27 * specified in the stylesheet that effect the format of the document output.
28 *
29 * In an XSLT stylesheet these attributes appear for example as:
30 * <pre>
31 * <xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
32 * </pre>
33 * The xsl:output attributes covered in this interface are:
34 * <pre>
35 * version
36 * encoding
37 * omit-xml-declarations
38 * standalone
39 * doctype-public
40 * doctype-system
41 * cdata-section-elements
42 * indent
43 * media-type
44 * </pre>
45 *
46 * The one attribute not covered in this interface is <code>method</code> as
47 * this value is implicitly chosen by the serializer that is created, for
48 * example ToXMLStream vs. ToHTMLStream or another one.
49 *
50 * This interface is only used internally within Xalan.
51 *
52 * @xsl.usage internal
53 * @LastModified: Oct 2017
54 */
55 interface XSLOutputAttributes {
56 /**
57 * Returns the previously set value of the value to be used as the public
58 * identifier in the document type declaration (DTD).
59 *
60 *@return the public identifier to be used in the DOCTYPE declaration in the
61 * output document.
62 */
63 public String getDoctypePublic();
64
65 /**
66 * Returns the previously set value of the value to be used
67 * as the system identifier in the document type declaration (DTD).
68 * @return the system identifier to be used in the DOCTYPE declaration in
69 * the output document.
70 *
71 */
72 public String getDoctypeSystem();
73
74 /**
75 * @return the character encoding to be used in the output document.
76 */
77 public String getEncoding();
78
79 /**
80 * @return true if the output document should be indented to visually
81 * indicate its structure.
82 */
83 public boolean getIndent();
84
85 /**
86 * @return the number of spaces to indent for each indentation level.
87 */
88 public int getIndentAmount();
89
90 /**
91 * @return the mediatype the media-type or MIME type associated with the
92 * output document.
93 */
94 public String getMediaType();
95
96 /**
97 * @return true if the XML declaration is to be omitted from the output
98 * document.
99 */
100 public boolean getOmitXMLDeclaration();
101
102 /**
103 * @return a value of "yes" if the <code>standalone</code> delaration is to
104 * be included in the output document.
105 */
106 public String getStandalone();
107
108 /**
109 * @return the version of the output format.
110 */
111 public String getVersion();
112
113 /**
114 * Sets the value coming from the xsl:output cdata-section-elements
115 * stylesheet property.
116 *
117 * This sets the elements whose text elements are to be output as CDATA
118 * sections.
119 * @param URI_and_localNames pairs of namespace URI and local names that
120 * identify elements whose text elements are to be output as CDATA sections.
121 * The namespace of the local element must be the given URI to match. The
122 * qName is not given because the prefix does not matter, only the namespace
123 * URI to which that prefix would map matters, so the prefix itself is not
124 * relevant in specifying which elements have their text to be output as
125 * CDATA sections.
126 */
127 public void setCdataSectionElements(List<String> URI_and_localNames);
128
129 /** Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties
130 * @param system the system identifier to be used in the DOCTYPE declaration
131 * in the output document.
132 * @param pub the public identifier to be used in the DOCTYPE declaration in
133 * the output document.
134 */
135 public void setDoctype(String system, String pub);
136
137 /** Set the value coming from the xsl:output doctype-public stylesheet attribute.
138 * @param doctype the public identifier to be used in the DOCTYPE
139 * declaration in the output document.
140 */
141 public void setDoctypePublic(String doctype);
142
143 /** Set the value coming from the xsl:output doctype-system stylesheet attribute.
144 * @param doctype the system identifier to be used in the DOCTYPE
145 * declaration in the output document.
146 */
147 public void setDoctypeSystem(String doctype);
148
149 /**
150 * Sets the character encoding coming from the xsl:output encoding stylesheet attribute.
151 * @param encoding the character encoding
152 */
153 public void setEncoding(String encoding);
154
155 /**
156 * Sets the value coming from the xsl:output indent stylesheet
157 * attribute.
158 * @param indent true if the output document should be indented to visually
159 * indicate its structure.
160 */
161 public void setIndent(boolean indent);
162
163 /**
164 * Sets the value coming from the xsl:output media-type stylesheet attribute.
165 * @param mediatype the media-type or MIME type associated with the output
166 * document.
167 */
168 public void setMediaType(String mediatype);
169
170 /**
171 * Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute
172 * @param b true if the XML declaration is to be omitted from the output
173 * document.
174 */
175 public void setOmitXMLDeclaration(boolean b);
176
177 /**
178 * Sets the value coming from the xsl:output standalone stylesheet attribute.
179 * @param standalone a value of "yes" indicates that the
180 * <code>standalone</code> delaration is to be included in the output
181 * document.
182 */
183 public void setStandalone(String standalone);
184
185 /**
186 * Sets the value coming from the xsl:output version attribute.
187 * @param version the version of the output format.
188 */
189 public void setVersion(String version);
190
191 /**
192 * Get the value for a property that affects seraialization,
193 * if a property was set return that value, otherwise return
194 * the default value, otherwise return null.
195 * @param name The name of the property, which is just the local name
196 * if it is in no namespace, but is the URI in curly braces followed by
197 * the local name if it is in a namespace, for example:
198 * <ul>
199 * <li> "encoding"
200 * <li> "method"
201 * <li> "{http://xml.apache.org/xalan}indent-amount"
202 * <li> "{http://xml.apache.org/xalan}line-separator"
203 * </ul>
204 * @return The value of the parameter
205 */
206 public String getOutputProperty(String name);
207
208 /**
209 * Get the default value for a property that affects seraialization,
210 * or null if there is none. It is possible that a non-default value
211 * was set for the property, however the value returned by this method
212 * is unaffected by any non-default settings.
213 * @param name The name of the property.
214 * @return The default value of the parameter, or null if there is no default value.
215 */
216 public String getOutputPropertyDefault(String name);
217
218 /**
219 * Set the non-default value for a property that affects seraialization.
220 * @param name The name of the property, which is just the local name
221 * if it is in no namespace, but is the URI in curly braces followed by
222 * the local name if it is in a namespace, for example:
223 * <ul>
224 * <li> "encoding"
225 * <li> "method"
226 * <li> "{http://xml.apache.org/xalan}indent-amount"
227 * <li> "{http://xml.apache.org/xalan}line-separator"
228 * </ul>
229 * @val The non-default value of the parameter
230 */
231 public void setOutputProperty(String name, String val);
232
233 /**
234 * Set the default value for a property that affects seraialization.
235 * @param name The name of the property, which is just the local name
236 * if it is in no namespace, but is the URI in curly braces followed by
237 * the local name if it is in a namespace, for example:
238 * <ul>
239 * <li> "encoding"
240 * <li> "method"
241 * <li> "{http://xml.apache.org/xalan}indent-amount"
242 * <li> "{http://xml.apache.org/xalan}line-separator"
243 * </ul>
244 * @val The default value of the parameter
245 */
246 public void setOutputPropertyDefault(String name, String val);
247 }
--- EOF ---