Page 1 of 1
Multiple Ditavals in WebAuthor URL
Posted: Fri Jan 29, 2021 11:44 pm
by zuza
Hello,
I am trying to construct the “edit online” links for the latest editlink plugin. We are still using editlink.web.author.url and editlink.remote.ditamap.url, but moving on to using editlink.ditamap.edit.url and editlink.additional.query.parameters.
I assume the ditavals need to be passed in the editlink.additional.query.parameters parameter, is this correct?
It seems to me that WebAuthor does not support filtering using multiple ditavals... I have tried something similar to the following (note: we are using Perforce revision system) and noticed that only the last ditaval in the list is used for filtering.
“&dita.val.url= p4java://p4master.hh.imgtec.org:1666//techpubs/MAIN/ditavals/product.ditaval&dita.val.url= p4java://p4master.hh.imgtec.org:1666//techpubs/MAIN/ditavals/features.ditaval&dita.val.url= p4java://p4master.hh.imgtec.org:1666//techpubs/MAIN/ditavals/audience.ditaval”
Would you consider implementing support for filtering with multiple ditaval files in WebAuthor? We use 4-5 ditavals for most of the PDFs we publish.
Many thanks.
Best regards,
Ozana
Re: Multiple Ditavals in WebAuthor URL
Posted: Mon Feb 01, 2021 7:15 pm
by cristi_talau
Hello,
It is currently not possible to pass multiple DITAVAL files. I registered an internal issue to add this possibility. I will update this thread when it is implemented.
Meanwhile, you can create DITAVAL files that contain all the rules in those multiple files.
Best,
Cristian
Re: Multiple Ditavals in WebAuthor URL
Posted: Tue Nov 08, 2022 10:55 pm
by kj_rk
If I understand this correctly, using multiple ditaval files is not allowed using the UI as well. Correct?
For example, if we have 2 different ditaval files for 2 different product guides (to be generated from the same Oxygen project), Oxygen does not validate the bookmap correctly.
- image.png (48.48 KiB) Viewed 1274 times
The validation only works with one ditaval file at any time. So every time, we have to switch (remove and add) the appropriate ditaval file according to our needs.
Can this be fixed such that only the "selected" ditaval file is used during validation? That would be more intuitive.
Thanks
kj_rk
Re: Multiple Ditavals in WebAuthor URL
Posted: Wed Nov 09, 2022 12:19 pm
by mihaela
Hello,
If I understand correctly you are referring to the DITA Maps Completeness Check action from the Oxygen XML Editor, right?
If this is the case, then the answer is that all DITAVALs are used: for each DITAVAL file from this list, the map content is filtered using the DITAVAL file before validation [1].
The first question from this post refers to Oxygen XML Web Author, which has no support yet for using multiple DITAVALs when opening a document.
[1]
https://www.oxygenxml.com/doc/versions/ ... al-filters
Best regards,
Mihaela
Re: Multiple Ditavals in WebAuthor URL
Posted: Thu Dec 07, 2023 11:06 pm
by kj_rk
Hi Christian,
To your following comment:
"Meanwhile, you can create DITAVAL files that contain all the rules in those multiple files."
How is this possible? We have multiple ditaval files, one for each product type. All products reuse some topics but need some product-specific variations.
To validate these, is there a way to combine different product combinations (to include/exclude) in one DITAVAL file?
Thanks
Re: Multiple Ditavals in WebAuthor URL
Posted: Fri Dec 08, 2023 1:20 pm
by mircea_b
Hello,
Regarding how you can create a DITAVAL file that contains all the rules from multiple files:
You need to create a single (combined) DITAVAL file for each product. This file
concatenates the individual DITAVAL files by merging their content.
An example of how you can create such a DITAVAL file using python:
Code: Select all
import xml.etree.ElementTree as ET
import sys
def merge_ditavals(file_paths, output_file):
first_file = True
for file_path in file_paths:
tree = ET.parse(file_path)
root = tree.getroot()
if first_file:
merged_root = root
first_file = False
else:
for element in root:
merged_root.append(element)
merged_tree = ET.ElementTree(merged_root)
merged_tree.write(output_file, encoding='utf-8', xml_declaration=True)
def main():
if len(sys.argv) < 3:
print("Usage: python3 ditaval_merger.py <output_file.ditaval> <file1.ditaval> <file2.ditaval> ...")
sys.exit(1)
output_file = sys.argv[1]
file_paths = sys.argv[2:]
merge_ditavals(file_paths, output_file)
print(f"Merged DITAVAL file created at {output_file}")
if __name__ == "__main__":
main()
This code can be saved into a file called
and be used using the command line to create the merged file:
Code: Select all
python3 ditaval_merger.py output.ditaval ditaval1.ditaval ditaval2.ditaval
.
Note that you need to have python installed on your system.
Best regards,
Mircea